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

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

我已经安装了一个应用程序,当我试图运行它(它是一个可执行的JAR)时,什么都不会发生。当我从命令行运行它时:

JavaJAR“app.jar”

我收到以下信息:

在“app.jar”中没有主清单属性

通常,如果我自己创建了程序,我就会向清单文件中添加一个主类属性。但是在这种情况下,由于文件来自应用程序,所以我不能这样做。我还试着提取JAR,看看是否能找到主类,但是很多类都有,而且没有一个类的名称中有“main”这个词。必须有一种方法来解决这个问题,因为该程序在其他系统上运行良好。


海绵宝宝撒
浏览 690回答 3
3回答

慕姐8265434

首先,看到你逃跑有点奇怪java -jar "app"而不是java -jar app.jar第二,要使JAR可执行.。您需要打开一个名为meta-INF/MANIFEST.MF的文件。文件本身应该有(至少)这个衬垫:Main-Class:&nbsp;com.mypackage.MyClass哪里com.mypackage.MyClass类是否持有公共静态空主(String[]args)进入点。请注意,有几种方法可以通过CLI、Maven、Ant或Gradle来完成:为克莱,将执行以下命令:(tks@vvrt)&nbsp;jar cmvf META-INF/MANIFEST.MF <new-jar-filename>.jar &nbsp;<files to include>为马文,类似于下面的片段应该可以做到这一点。请注意,这只是插件的定义,而不是完整的。柚木:<build> &nbsp;&nbsp;<plugins> &nbsp;&nbsp;&nbsp;&nbsp;<plugin> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<!--&nbsp;Build&nbsp;an&nbsp;executable&nbsp;JAR&nbsp;--> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<groupId>org.apache.maven.plugins</groupId> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<artifactId>maven-jar-plugin</artifactId> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<version>3.1.0</version> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<configuration> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<archive> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<manifest> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<addClasspath>true</addClasspath> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<classpathPrefix>lib/</classpathPrefix> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<mainClass>com.mypackage.MyClass</mainClass> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</manifest> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</archive> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</configuration> &nbsp;&nbsp;&nbsp;&nbsp;</plugin> &nbsp;&nbsp;</plugins></build>(选一个<version>适合你的项目)为蚂蚁,下面的片段应该会有所帮助:<jar&nbsp;destfile="build/main/checksites.jar"> &nbsp;&nbsp;<fileset&nbsp;dir="build/main/classes"/> &nbsp;&nbsp;<zipfileset&nbsp;includes="**/*.class"&nbsp;src="lib/main/some.jar"/> &nbsp;&nbsp;<manifest> &nbsp;&nbsp;&nbsp;&nbsp;<attribute&nbsp;name="Main-Class"&nbsp;value="com.acme.checksites.Main"/> &nbsp;&nbsp;</manifest></jar>迈克尔·尼曼德-为梯度:plugins&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;id&nbsp;'java'}jar&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;manifest&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;attributes( &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'Main-Class':&nbsp;'com.mypackage.MyClass' &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;) &nbsp;&nbsp;&nbsp;&nbsp;}}

杨__羊羊

那应该是java -jar app.jar而不是java -jar "app".这个-jar选项只在JAR文件是可执行的JAR文件时才有效,这意味着它必须有一个带有Main-Class属性在里面。看见JAR文件中的打包程序学习如何创建可执行的JAR。如果它不是一个可执行的JAR,那么您需要运行这个程序,如下所示:java&nbsp;-cp&nbsp;app.jar&nbsp;com.somepackage.SomeClass哪里com.somepackage.SomeClass是包含main方法来运行程序。(这个类取决于程序,从您提供的信息来看是不可能知道的)。

哈士奇WWW

或者,您可以使用maven程序集插件,如下面的示例所示:<plugin> &nbsp;&nbsp;&nbsp;&nbsp;<artifactId>maven-assembly-plugin</artifactId> &nbsp;&nbsp;&nbsp;&nbsp;<executions> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<execution> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<phase>package</phase> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<goals> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<goal>single</goal> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</goals> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</execution> &nbsp;&nbsp;&nbsp;&nbsp;</executions> &nbsp;&nbsp;&nbsp;&nbsp;<configuration> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<archive> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<manifest> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<addClasspath>true</addClasspath> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<mainClass>com.package.MainClass</mainClass> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</manifest> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</archive> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<descriptorRefs> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<descriptorRef>jar-with-dependencies</descriptorRef> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</descriptorRefs> &nbsp;&nbsp;&nbsp;&nbsp;</configuration> &nbsp;&nbsp;</plugin>在本例中,节中指定的所有依赖JAR都将自动包含在单个JAR中。请注意,JAR与-依赖关系应该按字面顺序放置为,而不是替换为您想要包含的JAR文件名。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java