Maven编译报错[ERROR] Fatal Error: Unable to find package java.lang in classpath or bootclasspath

小感触 2020年01月19日 345次浏览

使用Maven打包项目的时候,提示出现以下错误:

Unable to find package java.lang in classpath or bootclasspath

原因是使用了下面的插件:

           <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.3</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                    <compilerArguments>
                        <bootclasspath>${java.home}/lib/rt.jar;${java.home}/lib/jce.jar</bootclasspath>
                    </compilerArguments>
                </configuration>
            </plugin>

问题出现在这里:

$/lib/rt.jar;$/lib/jce.jar

在Windows和Linux下,分隔符是不一样的。Windows为“;”,而Linux为“:”,所以应该把分隔符替换为Maven中的变量,让它根据系统平台自行决定,整体效果如下:

	<plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.7</source>
                    <target>1.7</target>
                    <encoding>UTF-8</encoding>
                    <!--<fork>true</fork>-->
                    <!-- 解决maven命令编译报错,因为rt.jar 和jce.jar在jre的lib下面,不在jdk的lib下面,
                        导致maven找不到(java7以后会出现这个问题),将这2个jar包拷贝到jdk的lib下面估计也好使-->
                    <compilerArguments>
                        <verbose/>
                        <bootclasspath>${java.home}/lib/rt.jar${path.separator}${java.home}/lib/jce.jar</bootclasspath>
                    </compilerArguments>
                </configuration>
         </plugin>

替换之后,打包正常:
TIM截图20200119164138.png