【发布时间】:2015-07-30 04:56:49
【问题描述】:
我在从终端运行具有本机和 .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
其中 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:/home/ johnmichaelreed/Desktop/Dropbox/Libjitsi_linux_64/*' Main
尝试命令行参数:
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"
【问题讨论】:
-
我会说您的命令的外壳扩展(解析 *)使整行不正确,并且 java 将您的 jar 文件之一作为类名。我不确定您是否可以在您的情况下使用 *,但请尝试将参数括在引号中。
标签: java linux jar path classpath