今天写完了一个service,打jar包显示正常,但是重启STAF的时候出现了问题,总是提示:
SERVICE DeviceService LIBRARY JSTAF EXECUTE C:/STAF/DeviceService.jar
Error code: 38
Reason : Error constructing service, JSTAF, Result: ClassNotFound: com.ibm.
af.service.DeviceService
造成这个问题的还是jar包没打好,网上搜了搜,发现这篇文章不错。按其操作,okay!
如果用Eclipse的话,需要先配置Project的“Java Build Path”:右键点击Project--》"Propertities”--》"Java Build Path"-->"Source"-->输入"Default output folder"为"工程名/STAF-INFO/classes" .
如图,
ps: Eclipse 打jar包好像有问题。。。只能用命令行了。。谁有办法用Ep打包麻烦告诉我谢谢!
===========================================================
http://hi.baidu.com/widebright/blog/item/d70ee7ddcc0e84ec76c63839.html
完了编译一下就可以了。不过STAF要求注册的service是一个jar包,而且包里面的文件按一定的规定。
就是有个MANIFEST.MF 文件还有 一个STAF-INF文件夹。可以文章开始部分参考资料那个网页来得到详细信息了。
我是在一个linux服务器上测试的,一开始本机编译一个 *.jar过去,注册的时候竟然提示java版本不对,后来把*.java代码直接传过去然后在那里本地编译了一下才行。
这个就是完整的文件结构信息了,只要最后的那个widebright.jar就可以注册service了。
mkdir STAF-INF
mkdir STAF-INF/classes 要按照一定的文件夹结构
[root@Computer-A widebright]# javac -d STAF-INF/classes *.java 编译代码
[root@Computer-A widebright]# jar cfm widebright.jar MANIFEST.MF STAF-INF 打包 jar文件
[root@Computer-A widebright]# find ./
./
./widebright.jar
./MANIFEST.MF
./STAF-INF
./STAF-INF/classes
./STAF-INF/classes/widebright
./STAF-INF/classes/widebright/widebrightservice.class
./widebrightservice.java
--------------------------------------------
MANIFEST.MF文件内容如下,只要根据需要修改Service-Class:后面的字符串指定 package 和类名就可以了,这里要写对才行,不然注册不成功的。
[root@Computer-A widebright]# cat MANIFEST.MF
Manifest-Version: 1.0
Name: staf/service/info
Service-Class: widebright.widebrightservice