Linux系統下運行jar文件,提示:No main manifest attribute, in XXX.jar

在Linux系統下執行java -jar XXX.jar com.HelloWorld每每會提示:No main manifest attribute, in XXX.jarjava

緣由以下:apache

正常狀況下,java打包成jar包須要在MANIFEST.MF中指定Main-Class項以便運行java -jar XXX.jar時找到對應的主類。由於-jar的含義就是後面跟的jar包是有main class可獨立運行,因此須要在打包成jar包時指定這個類。maven

若是想運行時指定想要運行的類,此時應該用-cp / --classpath來指定,命令以下:
好比:java -cp XXX.jar com.HelloWorldui

打包也能夠經過如下方式指定,來直接運行jar文件 java -jar xxx.jarspa

<plugins>
    <!-- 打包jar文件時,配置manifest文件,加入lib包的jar依賴 -->
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <version>2.6</version>
        <configuration>
            <classesDirectory>target/classes/</classesDirectory>
            <archive>
                <manifest>
                    <mainClass>com.alibaba.dubbo.container.Main</mainClass>
                    <!-- 打包時 MANIFEST.MF文件不記錄的時間戳版本 -->
                    <useUniqueVersions>false</useUniqueVersions>
                    <addClasspath>true</addClasspath>
                    <classpathPrefix>crm-lib/</classpathPrefix>
                </manifest>
                <manifestEntries>
                    <Class-Path>.</Class-Path>
                </manifestEntries>
            </archive>
        </configuration>
    </plugin>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-dependency-plugin</artifactId>
        <executions>
            <execution>
                <id>copy-dependencies</id>
                <phase>package</phase>
                <goals>
                    <goal>copy-dependencies</goal>
                </goals>
                <configuration>
                    <type>jar</type>
                    <includeTypes>jar</includeTypes>
                    <outputDirectory>
                        ${project.build.directory}/crm-lib
                    </outputDirectory>
                </configuration>
            </execution>
        </executions>
    </plugin>
</plugins>
相關文章
相關標籤/搜索