解决maven 引用JDK内部类编译错误 程序包:com.sun.xml.internal.bind.marshaller.CharacterEscapeHandler不存在…
网上很多帖子的解决方案如下:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
<encoding>UTF-8</encoding>
<compilerArguments>
<verbose/>
<bootclasspath>${java.home}/lib/rt.jar${path.separator}${java.home}/lib/jce.jar</bootclasspath>
</compilerArguments>
</configuration>
</plugin>
${path.separator}
这个分隔符,在Windows系统下是“;”分号,在Linux下是“:”冒号。
为了使打包时自动选择,可以使用${path.separator}
经过自测,上述方式无效,在Linux系统中仍会出现compiler unkown error.使用如下方式可解决依赖问题,同时注意项目的路径不要包含中文,否则肯能会引起乱码等错误。
当maven项目里面有用到JDK内部的一些类或者接口的时候,用maven编译一般会出现如下错误:
程序包:com.sun.xml.internal.bind.marshaller.CharacterEscapeHandler不存在。
解决方法如下:
添加maven-compiler-plugin插件,并且配置compilerArguments
如:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
<compilerArgs>
<arg>-XDignore.symbol.file</arg>
</compilerArgs>
<fork>true</fork>
</configuration>
</plugin>