无法执行jar文件:“no main manifest属性”

问题:

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

java -jar“app.jar”

我收到以下消息:

没有主要的manifest属性,在“app.jar”

通常,如果我自己创建了程序,我将添加一个主类属性到清单文件。但是在这种情况下,由于文件来自应用程序,我无法做到这一点。我也尝试解压缩jar,看是否可以找到主类,但是有很多类,没有一个在它的名字中有“main”这个词。必须有一种方法来解决这个问题,因为程序在其他系统上运行正常。

回答:

首先,看到你跑java -jar "app"而不是java -jar app.jar这很奇怪
第二,要做一个jar可执行文件…你需要一个名为META-INF / MANIFEST.MF的文件
文件本身应该有(至少)这一个衬垫:

Main-Class: com.mypackage.MyClass

其中com.mypackage.MyClass是持有public static void main(String[] args)入口点的类。
请注意,有几种方法可以使用CLI,Maven或Ant完成此操作:
对于CLI,将执行以下命令:(tks @dvvrt)
 
jar cmvf META-INF/MANIFEST.MF <new-jar-filename>.jar <files to include>

对于Maven的,类似以下代码片段的操作应该是这样。请注意,这只是插件定义,而不是完整的的pom.xml
class=”lang-xml prettyprint-override”>

<build>
  <plugins>
    <plugin>
      <!-- Build an executable JAR -->
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-jar-plugin</artifactId>
      <version>3.0.2</version>
      <configuration>
        <archive>
          <manifest>
            <addClasspath>true</addClasspath>
            <classpathPrefix>lib/</classpathPrefix>
            <mainClass>com.mypackage.MyClass</mainClass>
          </manifest>
        </archive>
      </configuration>
    </plugin>
  </plugins>
</build>

(选择适合您项目的<version>
对于蚂蚁,下面的代码段应该有助于:
class=”lang-xml prettyprint-override”>

<jar destfile="build/main/checksites.jar">
  <fileset dir="build/main/classes"/>
  <zipfileset includes="**/*.class" src="lib/main/some.jar"/>
  <manifest>
    <attribute name="Main-Class" value="com.acme.checksites.Main"/>
  </manifest>
</jar>

学分Michael Niemand –

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: Can’t execute jar- file: “no main manifest attribute”

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

+ 1 = 2