我试图使一个.bat脚本只是为了运行一个java文件,在那里我尝试使用JNI,但我有一个有趣的问题。
脚本应该被称为NativeMethodTest的目录,包含一个名为out的文件夹。
现在,当我在out文件夹中时,我可以使用
java HelloWorld
它工作得很好,但是当我在父文件夹中时,它似乎使用命令开始运行。
java -cp "./out" HelloWorld
但我知道这个错误
Exception in thread "main" java.lang.UnsatisfiedLinkError: no hello in java.library.path
at java.base/java.lang.ClassLoader.loadLibrary(Unknown Source)
at java.base/java.lang.Runtime.loadLibrary0(Unknown Source)
at java.base/java.lang.System.loadLibrary(Unknown Source)
at HelloWorld.<clinit>(HelloWorld.java:8)但是HelloWorld.java包含以下行
System.setProperty("java.library.path", "D:\\projects\\NativeMethodTest\\out\\.");
它将我的库路径设置为绝对的,所以当我在同一个文件夹中,但不在父文件夹中时,它应该可以工作,请帮助。
谢谢
在这里,文件夹结构:
./NativeMethodTest/run.bat ./NativeMethodTest/out/hello.dll ./NativeMethodTest/out/HelloWorld.class
发布于 2018-04-08 03:13:52
好吧,这很奇怪,因为getProperty("java.library.path")方法给出了路径,所以我做了一个错误的假设,但是多亏了Elliott,我将我的脚本修改为
java -cp "./out" -Djava.library.path=".\out\." HelloWorld
现在父母也很好用,
谢谢,祝你今天愉快
https://stackoverflow.com/questions/49713873
复制相似问题