设置 java.library.path 的替代方法?

发布于 2024-11-09 19:32:12 字数 373 浏览 1 评论 0原文

我有一个 Java 程序对本机库(“mylib.so”)进行一些 JNI 调用。每当我想从命令行运行这个程序时,我必须将 java.library.path 设置为我的库的位置:

java -Djava.library.path=/var/natives/ -classpath MyPackage.jar MyPackage.MyClass arg1 arg2

我想知道是否有任何替代方案,所以我不必使用 - 设置它每次运行程序时都会选择 D 选项。

我尝试将 /var/natives/ 添加到我的 $PATH 变量中,但它仍然抱怨如果我没有使用 -D 显式设置它,它无法找到该库。

我还有其他选择吗?

I have a Java program making some JNI calls to a native library ("mylib.so"). Whenever I want to run this program, from the command line, I must set java.library.path to the location of my library as such:

java -Djava.library.path=/var/natives/ -classpath MyPackage.jar MyPackage.MyClass arg1 arg2

I'm wondering if there are any alternatives so I do not have to set it with the -D option everytime I run my program.

I have tried adding /var/natives/ to my $PATH variable, but it still complains that it cannot find the library if I do not explicitly set it with -D.

Do I have any other options?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

滿滿的愛 2024-11-16 19:32:12

只需将整个命令放入 .sh 文件中即可避免每次都重复执行。

Just put the entire command in a .sh file to save yourself from repeating it everytime.

征﹌骨岁月お 2024-11-16 19:32:12

不要使用 System.loadLibrary("mylib"),而是使用 System.load("/var/natives/mylib.so")。

或者,您可以为该类定义自定义类加载器并重写 ClassLoader.findLibrary(String) 方法。

Instead of using System.loadLibrary("mylib"), use System.load("/var/natives/mylib.so").

Or, you could define a custom class loader for the class and override the ClassLoader.findLibrary(String) method.

抚你发端 2024-11-16 19:32:12

您可以将其放置的一个位置(诚然可能不是最佳的)是在 [JRE]/lib/i386 目录(或 [JRE]/lib/x64 或其他任何目录)在 64 位 Java 安装中调用)。

另外,您是否尝试过将 /var/natives 放入 LD_LIBRARY_PATH 中?

One place you can put it (which admittedly may be suboptimal) is in the [JRE]/lib/i386 directory (or [JRE]/lib/x64 or whatever it is called in a 64-bit Java installation).

Also, have you tried putting /var/natives in LD_LIBRARY_PATH?

疏忽 2024-11-16 19:32:12

另一种可能性是使用其中的开关创建您自己的变量。例如:

COMPILE="-Djava.library.path=/var/natives/ -classpath /var/packages/MyPackage.jar"

然后运行如下命令:

java $COMPILE MyPackage.MyClass arg1 arg2 arg3

Another possibility is creating your own variable with the switches in it. For example:

COMPILE="-Djava.library.path=/var/natives/ -classpath /var/packages/MyPackage.jar"

Then run the command like:

java $COMPILE MyPackage.MyClass arg1 arg2 arg3
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文