Windows上的Java 1.6 我正在使用一个使用JNI的Java库。我想使用java.library.path环境变量将它指向DLL,但它不起作用。当我在PATH变量中放置相同的路径时,它可以正常工作。
成功案例:
C:>设置 PATH = \ PROGRA〜1 \公司\ COMPAN〜1 \ lib中; \ PROGRA〜1 \爪哇\ jdk1.6.0_43 \ BIN
(设置没有驱动器或空格的路径以尽量避免空间问题,尽管所有的jar和库都在C盘上)
java -cp%CLASSPATH%com.company.samples.ft.MainClass
案例1失败:
设置PATH = \ Progra~1 \ Java \ jdk1.6.0_43 \ bin C:> java -Djava.library.path = \ Progra~1 \ Company \ Compan~1 \ lib -cp %CLASSPATH%com.company.samples.ft.MainClass ft \ FT.cfg无法 load base公司API库线程“main”中的异常 java.lang.UnsatisfiedLinkError:C:\ Program Files \ Company \ Company 客户端API \ lib \ CompanyAPI.dll:找不到依赖库 at java.lang.ClassLoader $ NativeLibrary.load(Native Method) at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1807) at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1732) 在java.lang.Runtime.loadLibrary0(Runtime.java:823) 在java.lang.System.loadLibrary(System.java:1028) 在com.company.api.CompanyClientAPIImpl。(CompanyClientAPIImpl.ja VA:113) 在com.company.samples.ft.MainClass.run(MainClass.java:130) 在com.company.samples.ft.MainClass.main(MainClass.java:498)
请注意,它确实找到了我的DLL而不是依赖项,即使它具有来自我原始Windows PATH的库路径。 java.library.path仍然缺少JDK路径,它仍然在PATH变量中,所以让我们尝试将它添加到java.library.path:
C:\ Program Files \ Company \ Company Client APIs \ samples \ jcapi> java -Djava.library.path = \ Progra~1 \ Company \ Compan~1 \ lib; \ Progra~1 \ Java \ jdk1.6.0_43 \ bin -cp %CLASSPATH%com.company.samples.ft.MainClass无法 load base公司API库线程“main”中的异常 java.lang.UnsatisfiedLinkError:C:\ Program Files \ Company \ Company 客户端API \ lib \ CompanyAPI.dll:找不到依赖库 at java.lang.ClassLoader $ NativeLibrary.load(Native Method) at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1807) at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1732) 在java.lang.Runtime.loadLibrary0(Runtime.java:823) 在java.lang.System.loadLibrary(System.java:1028) 在com.company.api.CompanyClientAPIImpl。(CompanyClientAPIImpl.java:113) 在com.company.samples.ft.MainClass.run(MainClass.java:130) 在com.company.samples.ft.MainClass.main(MainClass.java:498)
因此,即使java.library.path看起来与我原来的PATH完全相同,也找不到该库。知道问题在这里吗?
谢谢, 麦克