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