【问题标题】:How to specify the MainClass for java如何为 java 指定 MainClass
【发布时间】:2018-04-08 02:41:55
【问题描述】:

我正在尝试制作一个 .bat 脚本,仅用于运行我尝试使用 JNI 的 java 文件,但我遇到了一个有趣的问题。

脚本所在的目录名为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

【问题讨论】:

  • 您不能在 Java 中指定(或修改)java.library.path。

标签: java compilation


【解决方案1】:

好的,这很奇怪,因为 getProperty("java.library.path")method 给出了路径,所以我做了一个错误的假设,但是感谢 Elliott 我将我的脚本修复为

java -cp "./out" -Djava.library.path=".\out\." HelloWorld
现在父母也可以正常工作,
谢谢你有美好的一天

【讨论】:

    猜你喜欢
    • 2019-12-12
    • 2011-03-23
    • 2015-09-02
    • 1970-01-01
    • 1970-01-01
    • 2017-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多