我无法从终端运行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 -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"
答案 0 :(得分:0)
您无法同时使用-jar
和-cp
。
您可以做的是将jar添加到类路径中,然后指定要运行的Main类。您还可以在jar的清单中指定jar依赖项。
请查看here了解详情。
假设您的Main类位于被叫Main
和foo.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