自己挖的坑自己填-- maven打jar包部署服务器报错
码猿手 人气:01.今天 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
加载全部内容