1.今天 mvn install 后把 jar 包部署到服务器上,执行 java -jar xx.jar 报 “no main manifest attribute,in xx.jar”
解决办法:在pom.xml中添加下面配置
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<configuration>
<archive>
<manifest>
<mainClass>com.hrh.Blog</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
2.上面的问题解决后再重新打包部署,发现报“classNotFoundException”,依赖类找不到,查看 maven 打的 jar 包,发现里面只有源代码,依赖的 jar 包没有包含在里面
解决办法:把上面的pom.xml中的配置替换为
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.5.5</version><!--推荐使用3.0以下,3.0以上会存在部分问题,比如3.5会卡住 -->
<configuration>
<archive>
<manifest>
<mainClass>com.hrh.Blog</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<!-- 添加此项后,可直接使用mvn package | mvn install -->
<!-- 不添加此项,需直接使用mvn package assembly:single -->
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
我配置中没有添加 make-assembly 直接命令行执行 “mvn package assembly:single”,打包后的 jar 包为 “Blog-1.0-SNAPSHOT-jar-with-dependencies.jar”,再在服务器执行 java -jar xx.jar 成功。
3.把上面的 Java 类和依赖单独拿出来部署,执行 java xx 报依赖类找不到“classNotFoundException”
解决办法:将依赖文件引入到环境变量中,再执行 class 文件,执行 java xx 成功
vim /etc/profile
export CLASSPATH=.:/root/commons-collections-3.2.2.jar//格式为【.:/依赖包存放的完整路径】
source /etc/profile