用VC写了个DLL ,在普通的java类里能成功加载dll 并调用里面的函数。 但是在servlet里,dll加载了,但是调用其中的函数时就报错代码如下:public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException{System.out.println("DeviveControlServlet开始执行!!!");  System.loadLibrary("ParseProtocol");  System.out.println("dll加载完毕!!!");  GetDeviceObjct("192.168.3.100", 8000, 11001);//这里报错,普通java类里正常执行  System.out.println("getdeviceobject函数执行完毕!!!");}

解决方案 »

  1.   

    DeviveControlServlet开始执行!!!
    dll加载完毕!!!
    2012-8-6 16:29:18 org.apache.catalina.core.StandardWrapperValve invoke
    严重: Servlet.service() for servlet DeviceControlServlet threw exception
    java.lang.UnsatisfiedLinkError: sea.web.controller.DeviceControlServlet.GetDeviceObjct(Ljava/lang/String;II)I
    at sea.web.controller.DeviceControlServlet.GetDeviceObjct(Native Method)
    at sea.web.controller.DeviceControlServlet.doGet(DeviceControlServlet.java:31)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:261)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:581)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
    at java.lang.Thread.run(Thread.java:619)
    上面是完整错误信息,根据错误信息提示好像是连接错误,但是dll那条代码是执行过了的,没有提示说找不到dll,就是调用dll里的函数才报错, 而另外写个普通的java类,就不报错,能正常执行