0

我正在使用 jni4net,我正在读取 java 应用程序中的 .NET dll,当我直接在 main 方法上运行时它可以工作。下面是一个例子:

public static void main( String[] args ) throws IOException {       
    
    Bridge.setVerbose(true);
    Bridge.init();
    File dllFile2 = new File("Cripto.j4n.dll");
    Bridge.LoadAndRegisterAssemblyFrom(dllFile2);
    ...
    ...
  }

但是,当我尝试从下面的以下 Web 服务运行时

@GET
@Path("/conect")
public String conect() throws IOException { 
    
    Bridge.setVerbose(true);
    Bridge.init(); //the error is triggered at this point
    ...
    ...

}

发布以下错误:

Caused by: java.lang.IllegalArgumentException: URI scheme is not "file"
    

我已经尝试指向指示绝对路径的 dll Cripto.j4n.dll 的路径,但它不起作用,在我的尝试示例下方:

Bridge.init(new File("C:\\apps\\MyApp\\Cripto.j4n.dll"));
Bridge.init(new File("Cripto.j4n.dll")); //also tried this way

无论如何,我需要从 webService 上的 .dll 进行调用,服务器是 wildfly 9,我该怎么做?任何提示?

4

2 回答 2

1

该错误表明它需要格式的路径file:<full path here>,请在此处查看答案:Unable to call dll from Oracle and here: URI scheme is not "file"

于 2021-05-18T22:17:54.160 回答
0

我能够找到解决方案。

我直接指向 .dll 文件,此外,我指向错误的 .dll,他正在寻找“jni4net.n-0.8.5.0.dll”而不是“Cripto.j4n.dll”(这是我创建的文件),所以解决方案是指出“jni4net.n-0.8.5.0.dll”所在的文件夹是这样的:

Bridge.init( new java.io.File("C:\apps\MyApp")); 

我没有报告该文件,但它是“jni4net.n-0.8.5.0.dll”的文件夹

于 2021-05-19T17:47:41.777 回答