在具有本机和.jar依赖关系的终端上运行JAR文件时遇到了问题。好的,我的目标不是从终端运行它,而是使用Java的Runtime.getRuntime().exec函数作为一个单独的进程运行它,但是如果我不能从终端运行它,那么我也不能通过它运行它。我试图运行的JAR文件依赖于许多其他jar文件以及许多.so库。我试图将所有.jar依赖项和.so依赖项放在它们自己的文件夹中,然后用以下方式运行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其中,"/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",,但是我一直得到这个错误:
Error: Could not find or load main class
.home.johnmichaelreed.Desktop.Dropbox.Libjitsi_linux_64.some-compressed-jar-file.jar其中一些压缩的jar文件是我的应用程序应该使用的.jar文件之一。
下面是我的Java依赖关系文件夹:

下面是我的本机库依赖项文件夹:

更新:
好吧,这就是解决办法:
java -Djava.library.path=/home/johnmichaelreed/Desktop/Dropbox/Libjitsi_linux_64/lib/native/linux-64 -cp '/home/johnmichaelreed/NetBeansProjects/SendReceive/dist/SendReceive.jar:/home/johnmichaelreed/Desktop/Dropbox/Libjitsi_linux_64/*‘Main
尝试使用命令行args:
java -Djava.library.path=/home/johnmichaelreed/Desktop/Dropbox/Libjitsi_linux_64/lib/native/linux-64 -cp '/home/johnmichaelreed/NetBeansProjects/SendReceive/dist/SendReceive.jar:/home/johnmichaelreed/Desktop/Dropbox/Libjitsi_linux_64/*‘Main "arg“
发布于 2015-05-18 15:47:04
您不能同时使用-jar和-cp。
您可以做的是将jar添加到类路径中,然后指定要运行的主类。您还可以在jar的清单中指定jar依赖项。
更多细节请看here。
假设您的主类位于名为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.Mainhttps://stackoverflow.com/questions/30307412
复制相似问题