自己挖的坑自己填--maven打jar包部署服务器报错

  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
posted @ 2021-03-08 20:38  码猿手  阅读(397)  评论(0编辑  收藏  举报
Live2D