如何在终端中运行jar文件?
如何在终端中运行jar文件?
我安装了一个应用程序,但是当我尝试运行它(它是一个可执行的jar文件)时,什么也没有发生。当我使用以下命令从命令行运行它时:
java -jar \"app.jar\"
我得到以下消息:
在 \"app.jar\" 中没有主清单属性。
通常情况下,如果是我自己创建程序,我会在清单文件中添加主类属性。但是在这种情况下,由于文件来自应用程序,我无法这样做。我还尝试解压缩jar文件,看看是否可以找到主类,但类太多了,并且没有一个类的名称中包含“main”。肯定有一种方法可以解决这个问题,因为该程序在其他系统上运行良好。
这里应该是用 java -jar app.jar
而不是 java -jar "app"
。
-jar
选项只有在 JAR 文件为可执行 JAR 文件时才有效,这意味着 JAR 文件必须具有一个包含 Main-Class
属性的清单文件。请参阅在 JAR 文件中打包程序以了解如何创建可执行 JAR。
如果它不是可执行 JAR,则需要像下面这样运行程序:
java -cp app.jar com.somepackage.SomeClass
其中 com.somepackage.SomeClass
是包含 main
方法以运行程序的类。 (这个类取决于程序,无法从您提供的信息中得知)。
首先,看到你运行的是java -jar "app"
而不是java -jar app.jar
,有点奇怪。
其次,要让一个jar文件可执行,你需要打包一个名为META-INF/MANIFEST.MF的文件。
这个文件本身应该至少有以下这一行:
Main-Class: com.mypackage.MyClass
其中,com.mypackage.MyClass
是包含公共静态void main(String[] args)入口点的类。
请注意,有几种方法可以使用CLI、Maven、Ant或Gradle完成此操作:
对于CLI,以下命令将有效:dvvrt感谢:
jar cmvf META-INF/MANIFEST.MF.jar
对于Maven,类似以下代码片段应该就可以了。请注意,这只是插件定义,不是完整的pom.xml:
此插件的最新文档:请参见https://maven.apache.org/plugins/maven-jar-plugin/
org.apache.maven.plugins maven-jar-plugin 3.1.0 true lib/ com.mypackage.MyClass
对于Ant,下面的片段应该有帮助:
由 Michael Niemand 撰写 -
对于Gradle:
plugins { id 'java' } jar { manifest { attributes( 'Main-Class': 'com.mypackage.MyClass' ) } }