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