Maven编译报错:无法找到sun.misc.IOUtils类,求pom.xml解决方案
解决Java 11下Maven编译找不到sun.misc.IOUtils的问题
问题根源
sun.misc是JDK的内部私有包,从Java 9开始的模块化系统就默认禁止直接访问这类内部API,Java 11把限制收得更紧,所以编译时才会报找不到符号的错误。
两种解决方案
方案一:临时开放内部API访问(不推荐长期用)
修改pom.xml里的maven-compiler-plugin配置,添加编译参数开放sun.misc包的访问权限,同时把source和target版本改成和你当前环境一致的11:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>11</source> <target>11</target> <compilerArgs> <arg>--add-exports=java.base/sun.misc=ALL-UNNAMED</arg> </compilerArgs> </configuration> </plugin>
⚠️ 注意:这只是临时 workaround,sun.misc的API随时可能被JDK移除,长期来看有兼容性风险,不建议一直用。
方案二:替换为公共稳定的IOUtils(强烈推荐)
你的pom.xml里已经引入了commons-io依赖,这个库提供的org.apache.commons.io.IOUtils和sun.misc.IOUtils功能完全一致,而且是公开维护的稳定API。
只需要改两处:
- 把Java文件里的
import sun.misc.IOUtils;替换成import org.apache.commons.io.IOUtils; - 代码里的IOUtils调用逻辑不用改,方法签名基本完全匹配
这种方案没有版本兼容性问题,是长期维护的最佳选择。
额外提醒
你当前的maven-compiler-plugin配置的source和target还是1.8,但你用的是Java 11环境,版本不匹配可能会引发其他潜在问题,建议统一改成11。
内容的提问来源于stack exchange,提问作者CanadianGirl827x
相关产品推荐
相关产品推荐

