当前位置: 首页 > 知识库问答 >
问题:

从终端(Runtime.getRuntime(). exec)运行JAR文件,同时具有本机和. jar依赖关系

习洲
2023-03-14

我有麻烦运行一个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/”包含所有JAR文件。因此,要运行的文件和主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是其中之一。我的应用程序应该使用的jar文件。

这是我的JavaJAR依赖文件夹:

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

更新:

好的,这就是解决方案

java-Djava.library.path=/home/johnmichaelreed/Desktop/Dropbox/Libjitsi_linux_64/lib/本机/linux-64-cp'/home/johnmichaelreed/NetBeansProjects/SendRecture/dist/SendReceive.jar:/home/j ohnmichaelreed/Desktop/Dropbox/Libjitsi_linux_64/*'Main

尝试使用命令行参数时:

java-Djava.library.path=/home/johnmichaelreed/Desktop/Dropbox/Libjitsi_linux_64/lib/本机/linux-64-cp'/home/johnmichaelreed/NetBeansProjects/SendRecture/dist/SendReceive.jar:/home/j ohnmichaelreed/Desktop/Dropbox/Libjitsi_linux_64/*'Main"arg"

共有1个答案

阎鹏
2023-03-14

不能同时使用-jar-cp

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

请在这里查看更多详细信息。

假设您的主类位于名为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
 类似资料:
  • 我正在Java使用Eclipse Juno IDE制作数学反射游戏。根据我已经做过的研究,IDE在保存时将所有内容编译成文件字节码!现在的问题是,我已经尝试从Windows机器中提取JAR的所有内容,并将JAR交给一些beta测试人员。测试人员在试图从Linux访问时报告了问题 /Mac.我还知道,一个可运行的JAR(我所提取的一切)基本上是一个经过美化的ZIP压缩文件,其中包含JVM理解和执行的

  • 我有一些Java(swing)代码调用。如果我从命令行运行它,程序运行得非常好。

  • 我将通过JNA访问msp430.dll(参见此处)。但该库与其他本地库有依赖关系,这些本地库与MSP430.dll捆绑在一起。这个依赖的本机库称为hil.dll。使用jna.library.path后,所有的工作都非常出色。现在我会将本地库绑定到我自己的.jar包中。然后我将使用从JNA框架的jar自动加载本机库。但这会给具有依赖关系的本地库带来问题。如果我将msp430.dll和hil.dll打

  • 问题内容: 在我正在处理的项目中,我需要执行资源文件夹(位于类路径中)中的脚本。我只是在测试最终的脚本功能,因为我在Windows上,所以我需要一种将文件输出到STDIN的方法,因此我创建了一个简单的cat.jar程序来克隆unixs cat命令。 因此,当我执行“ java -jar cat.jar someFile.txt”时,它将输出文件到stdout。我敢肯定,我做的事情有不同的方式。 无

  • 我想构建这个项目,以便最终的jar在一个jar文件中包含所有依赖项(如果不可能的话,包括从依赖项到jar文件的类),我遵循了线程Including dependencies in a jar with Maven,但它也包含了我在pom中甚至没有提到的依赖项。这是我的POM,它只有两个依赖项。 我想当Final构建时,它包括pom中提到的特定依赖项(以类或jar形式)

  • 可以从jar文件中运行ant脚本吗? 目前,我有一个build.xml,它调用一些java代码,这些代码在一个jar文件中。然后它做一些进一步的蚂蚁处理。 当我从Eclipse导出jar文件时,我可以选择添加构建。xml文件到jar,所以我想知道我是否可以直接从jar运行ant脚本,这样我只需要给人们jar文件,而不是ant脚本。