先说下现在我这里的实现过程:
我使用axis2发布一个服务,服务实现过程中,要调用一段C程序写的代码,我用JNI调用。然后不通过服务发布,直接在main中测试,可以通过。当把服务用tomcat服务,再写客户端调用的时候,就出错了。。错误如下:
Exception in thread "main" org.apache.axis2.AxisFault: Could not initialize class TestCallC.HelloWorld
at org.apache.axis2.util.Utils.getInboundFaultFromMessageContext(Utils.java:435)
at org.apache.axis2.description.OutInAxisOperationClient.handleResponse(OutInAxisOperation.java:371)
at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:417)
at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:229)
at org.apache.axis2.client.OperationClient.execute(OperationClient.java:165)
at org.apache.axis2.client.ServiceClient.sendReceive(ServiceClient.java:540)
at org.apache.axis2.client.ServiceClient.sendReceive(ServiceClient.java:521)
at org.apache.axis2.rpc.client.RPCServiceClient.invokeBlocking(RPCServiceClient.java:102)
at WsClientNoStub.WsClient.invokeOp(WsClient.java:32)
at WsClientNoStub.WsClient.main(WsClient.java:85)其中TestCallC 是包名,HelloWorld是调用c程序的类。
现在我有两个问题:
1、如上问题,应该如何解决。。
2、我调用c编写的dll,一般情况下我是放到项目根目录那里的,但是这里服务是以aar形式发布的,dll也打包到aar中了,可是不能调用成功,我只有把dll放到tomcat的bin目录下才可以调用,然后出现上面所示错误?为什么?我应该把dll文件放置到什么地方呢?
我使用axis2发布一个服务,服务实现过程中,要调用一段C程序写的代码,我用JNI调用。然后不通过服务发布,直接在main中测试,可以通过。当把服务用tomcat服务,再写客户端调用的时候,就出错了。。错误如下:
Exception in thread "main" org.apache.axis2.AxisFault: Could not initialize class TestCallC.HelloWorld
at org.apache.axis2.util.Utils.getInboundFaultFromMessageContext(Utils.java:435)
at org.apache.axis2.description.OutInAxisOperationClient.handleResponse(OutInAxisOperation.java:371)
at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:417)
at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:229)
at org.apache.axis2.client.OperationClient.execute(OperationClient.java:165)
at org.apache.axis2.client.ServiceClient.sendReceive(ServiceClient.java:540)
at org.apache.axis2.client.ServiceClient.sendReceive(ServiceClient.java:521)
at org.apache.axis2.rpc.client.RPCServiceClient.invokeBlocking(RPCServiceClient.java:102)
at WsClientNoStub.WsClient.invokeOp(WsClient.java:32)
at WsClientNoStub.WsClient.main(WsClient.java:85)其中TestCallC 是包名,HelloWorld是调用c程序的类。
现在我有两个问题:
1、如上问题,应该如何解决。。
2、我调用c编写的dll,一般情况下我是放到项目根目录那里的,但是这里服务是以aar形式发布的,dll也打包到aar中了,可是不能调用成功,我只有把dll放到tomcat的bin目录下才可以调用,然后出现上面所示错误?为什么?我应该把dll文件放置到什么地方呢?
解决方案 »
- Spring 2.5 与 JPA 整合的问题
- hibernate和spring集成中发生错误
- 如何通过ApplicationContext取得service?
- 请教一个tomcat的问题
- 在struts中如何用标签表示一个变量是否等于‘0’或‘3’字符型的)
- 读取spring配置文件问题!各位大大帮忙下哈
- 在jsp中如何将数据库表中的一个字段读出来并添加到下拉列表框中(求一段代码)
- Hibernate, Spring查询Date类型的数据报错,帮忙啊!
- 一个简简单单的JavaMail的问题,请大家来看看!
- CMP EJB:我的实践过程(一)(以及遇到的问题)
- struts2怎样从jsp页面传值到action中呢?
- Connection reset by peer 求助
是把dll打到aar包的根目录下面吗?我就是这样做的啊,可是还是出现问题,说找不到,如下,我的dll文件名是TestCHelloWorld.dll:
Exception in thread "main" org.apache.axis2.AxisFault: no TestCHelloWorld in java.library.path
at org.apache.axis2.util.Utils.getInboundFaultFromMessageContext(Utils.java:435)
at org.apache.axis2.description.OutInAxisOperationClient.handleResponse(OutInAxisOperation.java:371)
at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:417)
at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:229)
at org.apache.axis2.client.OperationClient.execute(OperationClient.java:165)
at org.apache.axis2.client.ServiceClient.sendReceive(ServiceClient.java:540)
at org.apache.axis2.client.ServiceClient.sendReceive(ServiceClient.java:521)
at org.apache.axis2.rpc.client.RPCServiceClient.invokeBlocking(RPCServiceClient.java:102)
at WsClientNoStub.WsClient.invokeOp(WsClient.java:32)
at WsClientNoStub.WsClient.main(WsClient.java:103)
是不是还需要配置路径之类的?