如何在终端中运行jar文件?

18 浏览
0 Comments

如何在终端中运行jar文件?

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

java -jar \"app.jar\"

我得到以下消息:

在 \"app.jar\" 中没有主清单属性。

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

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

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

0
0 Comments

首先,看到你运行的是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'
        )
    }
}

0