Maven 项目中编译 sun.* 包下类的问题

有时项目中代码引用了 sun.* 包下的类,编译会报“包不存在”或“找不到符号”等错误。

这是由于 sun.* 包下的类不属于 Java 标准库,不推荐使用。如果硬是要使用的话,需要修改 maven 编译插件配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<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>
<compilerArguments>
<bootclasspath>
${java.home}/lib/rt.jar${path.separator}${java.home}/lib/jce.jar
</bootclasspath>
</compilerArguments>
</configuration>
</plugin>

注意这里配置的:${java.home}/lib/rt.jar${path.separator}${java.home}/lib/jce.jar,${path.separator} 表示路径分割符,在 UNIX 系统上表示为::,在 Windows 系统上表示为:;,是不一样的。

有些人编译报“致命错误: 在类路径或引导类路径中找不到程序包 java.lang”,可能就是因为把 ${path.separator} 写死了,对不同平台不兼容导致的。