还有一种没有提到的可能性。如果您从com.sun.*
. 也会导致这个问题。
程序在 ide 中运行时有效,因为里面的这些类com.sun.*
都在jre/lib
目录中,运行时会被加载。但是当您运行时mvn package
,由于自 java 1.6 以来 oracle 的限制,这些库将无法访问(这些库在某种程度上已被弃用)。要解决此问题,您可以添加
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
<compilerArguments>
<verbose />
<bootclasspath>C:/Program Files/Java/jdk1.8.0_161/jre/lib/rt.jar</bootclasspath>
</compilerArguments>
</configuration>
</plugin>
</plugins>
</build>
记得用你自己的路径替换 cootclasspathrt.jar
您可以搜索Access restriction: The type XXX is not accessible due to restriction on required library
更多详细信息。