为了账号安全,请及时绑定邮箱和手机立即绑定

无法执行jar-file:“无主清单属性”

无法执行jar-file:“无主清单属性”

海绵宝宝撒 2019-06-13 19:21:00
无法执行jar-file:“无主清单属性”我已经安装了一个应用程序,当我试图运行它(它是一个可执行的JAR)时,什么都不会发生。当我从命令行运行它时:JavaJAR“app.jar”我收到以下信息:在“app.jar”中没有主清单属性通常,如果我自己创建了程序,我就会向清单文件中添加一个主类属性。但是在这种情况下,由于文件来自应用程序,所以我不能这样做。我还试着提取JAR,看看是否能找到主类,但是很多类都有,而且没有一个类的名称中有“main”这个词。必须有一种方法来解决这个问题,因为该程序在其他系统上运行良好。
查看完整描述

3 回答

?
慕姐8265434

TA贡献1813条经验 获得超2个赞

首先,看到你逃跑有点奇怪java -jar "app"而不是java -jar app.jar

第二,要使JAR可执行.。您需要打开一个名为meta-INF/MANIFEST.MF的文件。

文件本身应该有(至少)这个衬垫:

Main-Class: com.mypackage.MyClass

哪里com.mypackage.MyClass类是否持有公共静态空主(String[]args)进入点。

请注意,有几种方法可以通过CLI、Maven、Ant或Gradle来完成:

克莱,将执行以下命令:(tks@vvrtjar cmvf META-INF/MANIFEST.MF <new-jar-filename>.jar  <files to include>

马文,类似于下面的片段应该可以做到这一点。请注意,这只是插件的定义,而不是完整的。柚木:

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

(选一个<version>适合你的项目)

蚂蚁,下面的片段应该会有所帮助:

<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>

迈克尔·尼曼德-

梯度:

plugins {
    id 'java'}jar {
    manifest {
        attributes(
                'Main-Class': 'com.mypackage.MyClass'
        )
    }}


查看完整回答
反对 回复 2019-06-13
?
杨__羊羊

TA贡献1943条经验 获得超7个赞

那应该是java -jar app.jar而不是java -jar "app".

这个-jar选项只在JAR文件是可执行的JAR文件时才有效,这意味着它必须有一个带有Main-Class属性在里面。看见JAR文件中的打包程序学习如何创建可执行的JAR。

如果它不是一个可执行的JAR,那么您需要运行这个程序,如下所示:

java -cp app.jar com.somepackage.SomeClass

哪里com.somepackage.SomeClass是包含main方法来运行程序。(这个类取决于程序,从您提供的信息来看是不可能知道的)。


查看完整回答
反对 回复 2019-06-13
?
哈士奇WWW

TA贡献1799条经验 获得超6个赞

或者,您可以使用maven程序集插件,如下面的示例所示:

<plugin>
    <artifactId>maven-assembly-plugin</artifactId>
    <executions>
      <execution>
        <phase>package</phase>
        <goals>
          <goal>single</goal>
        </goals>
      </execution>
    </executions>
    <configuration>
      <archive>
        <manifest>
          <addClasspath>true</addClasspath>
          <mainClass>com.package.MainClass</mainClass>
        </manifest>
      </archive>
      <descriptorRefs>
        <descriptorRef>jar-with-dependencies</descriptorRef>
      </descriptorRefs>
    </configuration>
  </plugin>

在本例中,节中指定的所有依赖JAR都将自动包含在单个JAR中。请注意,JAR与-依赖关系应该按字面顺序放置为,而不是替换为您想要包含的JAR文件名。


查看完整回答
反对 回复 2019-06-13
  • 3 回答
  • 0 关注
  • 686 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信