如何在后台运行jar应用程序?

22 浏览
0 Comments

如何在后台运行jar应用程序?

我安装了一个应用程序,当我尝试运行它(它是可执行的jar文件)时,没有任何反应。当我使用以下命令从命令行运行它:

java -jar \"app.jar\"

我收到以下消息:

在 \"app.jar\" 中找不到主清单属性。

通常,如果我是自己创建了该程序,我会将主类属性添加到清单文件中。但在这种情况下,由于该文件来自应用程序,我无法这样做。我还尝试提取jar文件以查找主类,但有太多类,而且没有一个类的名称中有 \"main\" 单词。肯定有方法可以解决此问题,因为该程序在其他系统上运行良好。

admin 更改状态以发布 2023年5月23日
0
0 Comments

应该使用 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 方法以运行程序的类。(这个类取决于程序,无法从您提供的信息中确定)。

0
0 Comments

首先,使用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'
        )
    }
}

0