ZPY博客

SpringBoot打成可执行jar包运行报错ClassNotFoundException

现象:直接在idea里点运行是没问题的,但是打成可执行jar包在命令行里用java -jar来执行就会报错ClassNotFoundException

看了下具体的找不到的类,发现是本地另一个common工程里的一个类。但是这个工程也打成了jar包在本地maven仓库啊,按理说应该是没问题的。后来百度了下springboot jar包的相关知识,发现jar包分两种,一种是可执行jar包,一种是不可执行jar包,只有不可执行jar包才能被引用其中的类。也就是说这里的common工程很可能也打成了可执行jar包,这样引用是找不到其中的类的。

找到问题所在后就简单了,修改common工程里的pom文件,注释掉

<build>
    <plugins>
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
      </plugin>
    </plugins>
  </build>

加上如下设置即可。

<build>
     <plugins>
        <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-compiler-plugin</artifactId>
           <configuration>
              <source>1.8</source>
              <target>1.8</target>
           </configuration>
        </plugin>
     </plugins>
  </build>