使用本机和.jar依赖项从终端(Runtime.getRuntime()。exec)运行JAR文件

时间:2015-05-18 15:37:43

标签: java linux jar path classpath

我无法从终端运行JAR文件,该文件同时具有native和.jar依赖项。好吧,我的目标不是从终端运行它,而是使用Java的Runtime.getRuntime()。exec函数将其作为一个单独的进程运行,但如果我不能从它运行它终端,然后我也无法通过它运行。我试图运行的JAR文件取决于许多其他jar文件以及许多.so库。我试图将所有.jar依赖项和.so依赖项放在自己的文件夹中,然后运行jar文件:

this.get('model').pushObject(Company.create({
    name: data.name,
    address: data.address,
    city: data.city,
    state: data.state
}));

Where" / home / johnmichaelreed / Desktop / Dropbox / Libjitsi_linux_64 /"包含所有JAR文件和" / home / johnmichaelreed / Desktop / Dropbox / Libjitsi_linux_64 / lib / native / linux-64 /"包含所有.so文件和要运行的主JAR文件是" /home/johnmichaelreed/NetBeansProjects/SendReceive/dist/SendReceive.jar",但我一直收到此错误:

java -cp /home/johnmichaelreed/Desktop/Dropbox/Libjitsi_linux_64/* -Djava.library.path=/home/johnmichaelreed/Desktop/Dropbox/Libjitsi_linux_64/lib/native/linux-64/* -jar /home/johnmichaelreed/NetBeansProjects/SendReceive/dist/SendReceive.jar

some-compressed-jar-file.jar是我的应用程序应该使用的.jar文件之一。

这是我的Java JAR依赖项文件夹:

Java Jar dependencies

这是我的本地库依赖项文件夹:

enter image description here

更新:

好的,这是解决方案:

java -Djava.library.path = / home / johnmichaelreed / Desktop / Dropbox / Libjitsi_linux_64 / lib / native / linux-64 -cp' /home/johnmichaelreed/NetBeansProjects/SendReceive/dist/SendReceive.jar: /家庭/ J ohnmichaelreed /桌面/ Dropbox的/ Libjitsi_linux_64 / *'主

尝试命令行args:

java -Djava.library.path = / home / johnmichaelreed / Desktop / Dropbox / Libjitsi_linux_64 / lib / native / linux-64 -cp' /home/johnmichaelreed/NetBeansProjects/SendReceive/dist/SendReceive.jar: /家庭/ J ohnmichaelreed /桌面/ Dropbox的/ Libjitsi_linux_64 / *'主要" arg"

1 个答案:

答案 0 :(得分:0)

您无法同时使用-jar-cp

您可以做的是将jar添加到类路径中,然后指定要运行的Main类。您还可以在jar的清单中指定jar依赖项。

请查看here了解详情。

假设您的Main类位于被叫Mainfoo.bar包中,那么可能的调用可能如下所示:

java -cp "/home/johnmichaelreed/Desktop/Dropbox/Libjitsi_linux_64/*;/home/johnmichaelreed/NetBeansProjects/SendReceive/dist/SendReceive.jar" -Djava.library.path="/home/johnmichaelreed/Desktop/Dropbox/Libjitsi_linux_64/lib/native/linux-64/*" foo.bar.Main