Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Eclipse导出的可运行Jar无法通过java.lang.UnsatisfiedLinkError异常_Java_Eclipse - Fatal编程技术网

Eclipse导出的可运行Jar无法通过java.lang.UnsatisfiedLinkError异常

Eclipse导出的可运行Jar无法通过java.lang.UnsatisfiedLinkError异常,java,eclipse,Java,Eclipse,这是一个著名的问题,有许多类似的问题,但没有解决办法帮助我。所以,请不要把我的问题标记为重复 我用Java开发了一个使用外部DLL的小应用程序。在eclipse中,一切似乎都很正常,但一旦我导出到runnable jar并使用java-jar myapplication.jar运行,它就会抛出以下异常: Exception in thread "main" java.lang.UnsatisfiedLinkError: Testing.dal.LoggingAccess.__LoggingAcc

这是一个著名的问题,有许多类似的问题,但没有解决办法帮助我。所以,请不要把我的问题标记为重复

我用Java开发了一个使用外部DLL的小应用程序。在eclipse中,一切似乎都很正常,但一旦我导出到runnable jar并使用
java-jar myapplication.jar
运行,它就会抛出以下异常:

Exception in thread "main" java.lang.UnsatisfiedLinkError: Testing.dal.LoggingAccess.__LoggingAccess0(Lnet/sf/jni4net/inj/IClrProxy;Ljava/lang/String;)V
        at Testing.dal.LoggingAccess.__LoggingAccess0(Native Method)
        at Testing.dal.LoggingAccess.<init>(LoggingAccess.java:25)
        at Program.listItems(Program.java:32)
        at Program.main(Program.java:27)
线程“main”java.lang.UnsatifiedLinkError中出现异常:Testing.dal.LoggingAccess.\uU LoggingAccess0(Lnet/sf/jni4net/inj/IClrProxy;Ljava/lang/String;)V 在测试时.dal.LoggingAccess.\uu LoggingAccess0(本机方法) at Testing.dal.LoggingAccess.(LoggingAccess.java:25) 在Program.listItems(Program.java:32) 位于Program.main(Program.java:27) 我已经试着做了其他答案中建议的几乎所有事情,但不幸的是,没有什么对我有效。 我试图设置
java.library.path
,但不知道是否正确。我不是java开发者,java世界对我来说是全新的。所以我可能做得不对。
如果你能给我一些关于如何解决这个问题的提示,那就太好了。

我自己也能解决这个问题

所需的库位于正确的位置,但我必须在java项目中引用它。问题是,我不想像许多文章中建议的那样,随意使用Path(环境变量)或将库复制到system32文件夹。这就是为什么我在main方法的开头添加了
System.Laod(新的java.io.File(“dll路径”).getAbsolutePath())

许多人建议使用不带.dll扩展名的库名,但对我来说,它只适用于.dll。此外,我不仅要加载所需的库,还要加载我的库所依赖的所有库。例如:我的库依赖于
EntityFramework.dll
,因此我必须在main方法中包含这一行:

System.load(new java.io.File("path/EntityFramework.dll").getAbsolutePath());
将项目导出到一个可运行的jar文件中并使用语句
java-jar exported file.jar从cmd进行测试后,我就能够在控制台中正确地看到输出了。我刚刚发布了这个答案,以防有人遇到这样的错误并寻找解决方案