Java Can';t执行jar-file:";无主清单属性“;

Java Can';t执行jar-file:";无主清单属性“;,java,jar,manifest,main,Java,Jar,Manifest,Main,我已经安装了一个应用程序,当我尝试运行它(它是一个可执行的jar)时,什么都没有发生。当我使用以下命令行运行它时: java-jar“app.jar” 我得到以下信息: “app.jar”中没有主清单属性 通常,如果我自己创建了这个程序,我会在清单文件中添加一个主类属性。但在本例中,由于文件来自应用程序,因此我不能这样做。我还尝试提取jar,看看是否可以找到主类,但是有太多的类,它们的名称中都没有“main”这个词。必须有办法解决这个问题,因为程序在其他系统上运行良好。如果jar没有跟随,它就不

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

java-jar“app.jar”

我得到以下信息:

“app.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>