错误: 程序包com.sun.xml.internal.bind.marshaller不存在
import com.sun.xml.internal.bind.marshaller.NamespacePrefixMapper;
public static class PreferredMapper extends NamespacePrefixMapper {
@Override
public String getPreferredPrefix(String arg0, String arg1, boolean arg2) {
return "jd";
}
}
原因:
javac在编译时不引用 rt.jar,用的是一个特别的symbol table(lib/ct.sym),这个symbol table不包含所有的sun包的类;
直接编译解决方案
javac -XDignore.symbol.file
Gradle解决方案
compileJava {
options.compilerArgs << '-XDignore.symbol.file'
options.fork = true // may not needed on 1.8
options.forkOptions.executable = 'javac' // may not needed on 1.8
}
Maven解决方案
<plugins>
<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>
<compilerArgs>
<arg>-XDignore.symbol.file</arg>
</compilerArgs>
<fork>true</fork>
</configuration>
|