Java Can';t执行jar-file:";无主清单属性“;
我已经安装了一个应用程序,当我尝试运行它(它是一个可执行的jar)时,什么都没有发生。当我使用以下命令行运行它时: java-jar“app.jar” 我得到以下信息: “app.jar”中没有主清单属性Java Can';t执行jar-file:";无主清单属性“;,java,jar,manifest,main,Java,Jar,Manifest,Main,我已经安装了一个应用程序,当我尝试运行它(它是一个可执行的jar)时,什么都没有发生。当我使用以下命令行运行它时: java-jar“app.jar” 我得到以下信息: “app.jar”中没有主清单属性 通常,如果我自己创建了这个程序,我会在清单文件中添加一个主类属性。但在本例中,由于文件来自应用程序,因此我不能这样做。我还尝试提取jar,看看是否可以找到主类,但是有太多的类,它们的名称中都没有“main”这个词。必须有办法解决这个问题,因为程序在其他系统上运行良好。如果jar没有跟随,它就不
通常,如果我自己创建了这个程序,我会在清单文件中添加一个主类属性。但在本例中,由于文件来自应用程序,因此我不能这样做。我还尝试提取jar,看看是否可以找到主类,但是有太多的类,它们的名称中都没有“main”这个词。必须有办法解决这个问题,因为程序在其他系统上运行良好。如果jar没有跟随,它就不是可执行的jar。如果jar没有跟随,它就不是可执行的jar。应该是
java-jar app.jar
而不是java-jar“app”
-jar
选项仅在jar文件是可执行的jar文件时有效,这意味着它必须有一个包含主类
属性的清单文件。请参阅以了解如何创建可执行JAR
如果它不是一个可执行的JAR,那么您需要使用以下内容运行程序:
java -cp app.jar com.somepackage.SomeClass
其中
com.somepackage.SomeClass
是包含运行程序的main
方法的类。(该类是什么取决于程序,无法从您提供的信息中分辨出来)。应该是java-jar app.jar
而不是java-jar“app”
-jar
选项仅在jar文件是可执行的jar文件时有效,这意味着它必须有一个包含主类
属性的清单文件。请参阅以了解如何创建可执行JAR
如果它不是一个可执行的JAR,那么您需要使用以下内容运行程序:
java -cp app.jar com.somepackage.SomeClass
其中
com.somepackage.SomeClass
是包含运行程序的main
方法的类。(该类是什么取决于程序,无法从您提供的信息中分辨出来)。首先,看到您运行java-jar“app”
而不是java-jar app.jar
第二,要使jar可执行。。。您需要jar一个名为META-INF/MANIFEST.MF的文件
文件本身应该(至少)有一行:
Main-Class: com.mypackage.MyClass
其中com.mypackage.MyClass
是包含公共静态void main(String[]args)入口点的类
请注意,有几种方法可以通过CLI、Maven、Ant或Gradle实现这一点:
对于CLI,将执行以下命令:(tks@)
首先,看到您运行
java-jar“app”
而不是java-jar app.jar
第二,要使jar可执行。。。您需要jar一个名为META-INF/MANIFEST.MF的文件
文件本身应该(至少)有一行:
Main-Class: com.mypackage.MyClass
其中com.mypackage.MyClass
是包含公共静态void main(String[]args)入口点的类
请注意,有几种方法可以通过CLI、Maven、Ant或Gradle实现这一点:
对于CLI,将执行以下命令:(tks@)
任何可执行jar文件都应该通过单击或使用命令提示符运行,如java-jar app.jar(使用“if-path of jar contains space”-即java-jar“C:\folder name\app.jar”)。如果您的可执行jar没有运行,这意味着它没有正确创建 为了更好地理解,请解压缩jar文件(或者使用任何工具查看,对于windows 7-Zip来说都是不错的),并检查/META-INF/MANIFEST.MF下的文件。如果你发现任何类似的条目 Main类:your.package.name.ClaaswithMain-那么就可以了,否则就必须提供它
注意在MANIFEST.MF文件中附加主类条目,检查保存它的位置 任何可执行jar文件都应该通过单击或使用命令提示符运行,如java-jar app.jar(使用“if path of jar contains space”-即java-jar“C:\folder name\app.jar”)。如果您的可执行jar没有运行,这意味着它没有正确创建 为了更好地理解,请解压缩jar文件(或者使用任何工具查看,对于windows 7-Zip来说都是不错的),并检查/META-INF/MANIFEST.MF下的文件。如果你发现任何类似的条目 Main类:your.package.name.ClaaswithMain-那么就可以了,否则就必须提供它
注意在MANIFEST.MF文件中附加主类条目,检查保存它的位置 对于maven来说,这就是解决它的原因(对于我来说,对于GitHub上的Veetle代码库):
org.apache.maven.plugins
maven阴影插件
2
包裹
阴凉处
org.lazydevs.veetle.api.VeetleAPI
干杯…对于maven来说,这就是解决它的原因(对于我来说,对于GitHub上的Veetle代码库):
org.apache.maven.plugins
maven阴影插件
2
包裹
阴凉处
org.lazydevs.veetle.api.VeetleAPI
干杯…尝试此命令以包括jar:
java -cp yourJarName.jar your.package..your.MainClass
请尝试此命令以包含jar:
java -cp yourJarName.jar your.package..your.MainClass
您可能没有正确创建jar文件: 示例:jar创建中缺少选项m 以下工作:
jar -cvfm MyJar.jar Manifest.txt *.class
您可能没有正确创建jar文件: 示例:jar创建中缺少选项m 以下工作:
jar -cvfm MyJar.jar Manifest.txt *.class
您可以简单地按照此步骤操作 使用创建jar文件
jar -cfm jarfile-name manifest-filename Class-file name
在运行jar文件时,简单地如下运行
java -cp jarfile-name main-classname
您可以简单地按照此步骤操作 使用创建jar文件
jar -cfm jarfile-name manifest-filename Class-file name
在运行jar文件时,简单地如下运行
java -cp jarfile-name main-classname
就是
apply plugin: 'java'
jar {
manifest {
attributes 'Main-Class': 'com.package.app.Class'
}
}
jar cfve app.jar TheNameOfClassWithMainMethod *.class
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.4.2.RELEASE</version>
</parent>
<properties>
<java.version>1.8</java.version>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
package testpackage;
public class Test
{
...
}
javac -d . Test.java
jar cvfeP test.jar testpackage.Test -C . testpackage/
META-INF
| MANIFEST.MF
testpackage
| Test.class
Manifest-Version: 1.0
Created-By: <JDK Version> (Oracle Corporation)
Main-Class: testpackage.Test
java -jar test.jar
// MANIFEST.MF
Manifest-Version: 1.0
Created-By: 1.8.0_91 (Oracle Corporation)
Main-Class: HelloWorldSwing
// run
~ java -jar HelloWorldSwing.jar
no main manifest attribute, in HelloWorldSwing.jar
Manifest-Version: 1.0
Main-Class: HelloWorldSwing
Created-By: 1.8.0_91 (Oracle Corporation)
//this run swing normally
jar tf /path/to/myjar.jar | more
META-INF/
META-INF/MANIFEST.MF
somepath/
somepath/App.class
META-INF/maven/
...
java -cp /path/to/myjar.jar somepath/App
<manifest>
<mainClass>mypackage.MyClass</mainClass>
</manifest>
apply plugin: 'java'
jar {
manifest {
attributes 'Main-Class': 'com.company.project.MainClass'
}
}
Main-Class: <packagename>.<classname>
Main-Class: <classname>
Start-Class: com.myco.eventlogging.MyService
Spring-Boot-Classes: BOOT-INF/classes/
Spring-Boot-Lib: BOOT-INF/lib/
Spring-Boot-Version: 1.4.0.RELEASE
Created-By: Apache Maven 3.3.9
Build-Jdk: 1.8.0_131
Main-Class: org.springframework.boot.loader.JarLauncher
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.2.0</version>
<configuration>
<archive>
<manifestFile> Your path like: src/main/resources/META-INF/MANIFEST.MF </manifestFile>
<index>true</index>
<manifest>
<addClasspath>true</addClasspath>
</manifest>
</archive>
</configuration>
</plugin>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.2.0</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<index>true</index>
<manifest>
<addClasspath>true</addClasspath>
<mainClass> yourpacket.yourmainclass (for exmaple info.data.MainClass)</mainClass>
</manifest>
<manifestEntries>
<mode>development</mode>
<url>${project.url}</url>
</manifestEntries>
</archive>
</configuration>
</plugin>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
...
...
...
</pluginManagement>
</build>