如何在后台运行jar应用程序?
如何在后台运行jar应用程序?
我安装了一个应用程序,当我尝试运行它(它是可执行的jar文件)时,没有任何反应。当我使用以下命令从命令行运行它:
java -jar \"app.jar\"
我收到以下消息:
在 \"app.jar\" 中找不到主清单属性。
通常,如果我是自己创建了该程序,我会将主类属性添加到清单文件中。但在这种情况下,由于该文件来自应用程序,我无法这样做。我还尝试提取jar文件以查找主类,但有太多类,而且没有一个类的名称中有 \"main\" 单词。肯定有方法可以解决此问题,因为该程序在其他系统上运行良好。
应该使用 java -jar app.jar
,而不是 java -jar "app"
。
-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的文件打入jar包中。
这个文件本身至少应该有以下一行内容:
Main-Class: com.mypackage.MyClass
其中,com.mypackage.MyClass
是包含公共静态void main(String[] args)入口的类。
请注意,有多种方法可以使用CLI、Maven、Ant或Gradle完成此操作:
对于CLI,可以使用以下命令:(tks @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' ) } }