有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

使用ApacheCXF和Eclipse的web服务中的java JNI问题

我用C++(MediMULL.DLL)创建一个DLL库并将其放入文件夹(C:\java文件(x86)\javajRe7\bin)。p>

我用Eclipse创建了一个Java项目,并调用了dll库。在Java应用程序上运行,结果是成功的。我可以得到数据

但我将相同的代码复制到web服务中,得到错误

请帮帮我,谢谢大家

文件目录

  • src
    • com。身体rsservice
      • 叫第三方小组。爪哇
      • 打电话给第三方。爪哇
  • 网络内容

调用第三方类。java

package com.body.rsservice;

public class CallThirdPartyClass {

    public native int[] CallThirdPartyDll(double[]    arg_DoubleArray,
            int         arg_SizeofArray,
            boolean     arg_print);

    public CallThirdPartyClass() 
    {
        System.loadLibrary("MediumDll");
    }

}

打电话给第三方。java

package com.body.rsservice;

import javax.ws.rs.Consumes;
import javax.ws.rs.POST;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import java.io.*;
import org.apache.cxf.annotations.GZIP;


@Path("/test")
public class CallThirdParty {

    @GET
    @Consumes(MediaType.APPLICATION_JSON)
    @Produces(MediaType.APPLICATION_JSON)
    public double[] GetCallThirdParty(){
        double doubleArray[] = {1.1, 2.5, 5,2};

        CallThirdPartyClass callThirdParty = new CallThirdPartyClass();
        callThirdParty.CallThirdPartyDll(doubleArray, 3, true);
        System.out.println("OK");

        int cutOffArray[] = callThirdParty.CallThirdPartyDll(doubleArray, 3, true);

        for (int i = 0; i < cutOffArray.length; ++i)
            System.out.println(cutOffArray[i]);
        return doubleArray;
    }

}

错误消息

HTTP Status 500 - org.apache.cxf.interceptor.Fault: com.body.rsservice.CallThirdPartyClass.CallThirdPartyDll([DIZ)[I

type Exception report

message org.apache.cxf.interceptor.Fault: com.body.rsservice.CallThirdPartyClass.CallThirdPartyDll([DIZ)[I

description The server encountered an internal error that prevented it from fulfilling this request.

exception

java.lang.RuntimeException: org.apache.cxf.interceptor.Fault: com.body.rsservice.CallThirdPartyClass.CallThirdPartyDll([DIZ)[I
    org.apache.cxf.interceptor.AbstractFaultChainInitiatorObserver.onMessage(AbstractFaultChainInitiatorObserver.java:117)
    org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:331)
    org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121)
    org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:239)
    org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:223)
    org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:203)
    org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:137)
    org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java:158)
    org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:243)
    org.apache.cxf.transport.servlet.AbstractHTTPServlet.doGet(AbstractHTTPServlet.java:168)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
    org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:219)
root cause

org.apache.cxf.interceptor.Fault: com.body.rsservice.CallThirdPartyClass.CallThirdPartyDll([DIZ)[I
    org.apache.cxf.service.invoker.AbstractInvoker.createFault(AbstractInvoker.java:162)
    org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:128)
    org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:194)
    org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:102)
    org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvokerInterceptor.java:58)
    org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage(ServiceInvokerInterceptor.java:94)
    org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:271)
    org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121)
    org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:239)
    org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:223)
    org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:203)
    org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:137)
    org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java:158)
    org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:243)
    org.apache.cxf.transport.servlet.AbstractHTTPServlet.doGet(AbstractHTTPServlet.java:168)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
    org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:219)
root cause

java.lang.UnsatisfiedLinkError: com.body.rsservice.CallThirdPartyClass.CallThirdPartyDll([DIZ)[I
    com.body.rsservice.CallThirdPartyClass.CallThirdPartyDll(Native Method)
    com.body.rsservice.CallThirdParty.GetCallThirdParty(CallThirdParty.java:23)
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    java.lang.reflect.Method.invoke(Unknown Source)
    org.apache.cxf.service.invoker.AbstractInvoker.performInvocation(AbstractInvoker.java:180)
    org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:96)
    org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:194)
    org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:102)
    org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvokerInterceptor.java:58)
    org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage(ServiceInvokerInterceptor.java:94)
    org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:271)
    org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121)
    org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:239)
    org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:223)
    org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:203)
    org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:137)
    org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java:158)
    org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:243)
    org.apache.cxf.transport.servlet.AbstractHTTPServlet.doGet(AbstractHTTPServlet.java:168)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
    org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:219)
note The full stack trace of the root cause is available in the Apache Tomcat/7.0.39 logs.

Apache Tomcat/7.0.39

共 (0) 个答案