• 自己挖的坑自己填--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
    作者:huangrenhui
    欢迎任何形式的转载,但请务必注明出处。
    如果,您认为阅读这篇博客让您有些收获,不妨点击一下右下角的【推荐】。
    如果,您希望更容易地发现我的新博客,不妨点击一下左下角的【关注我】。
    如果,您对我的博客所讲述的内容有兴趣,请继续关注我的后续博客,我是【码猿手】。
    限于本人水平,如果文章和代码有表述不当之处,还请不吝赐教。
  • 相关阅读:
    两个栈实现队列
    重建二叉树
    最大的K个数
    堆排序
    Android 强制竖屏
    屏蔽输入框的焦点
    Android 全屏显示的方法(不包含状态栏)
    android 布局之scrollview
    clean之后R文件消失
    thinkphp
  • 原文地址:https://www.cnblogs.com/huangrenhui/p/14502064.html
Copyright © 2020-2023  润新知