我的项目在JDK1.8下使用sun.security.tools.keytool生成证书,这个包可以在rt.jar中找到。根据Introduction to the Dependency Mechanism, System Dependencies,我可以将rt.jar作为依赖项添加到我的项目中:
<dependency>
<groupId>sun.jdk</groupId>
<artifactId>rt.jar</artifactId>
<version>1.8</version>
<scope>system</scope>
<systemPath>${java.home}/lib/rt.jar</systemPath>
</dependency>我很确定Maven找到了这个jar文件。但是,当我导入sun.security.tools.keytool.Main时,仍然会产生一个错误。此外,最奇怪的是,如果我将rt.jar复制到某个位置,并在pom.xml中填充它的路径,它就能工作!一旦我切换回使用原来的rt.jar,它就失败了!
有人能告诉我这是怎么发生的吗?
发布于 2015-07-17 09:38:17
我创建了一个Maven项目,并将您的问题的<dependency>添加到它的POM中。
首先,我得到了:
[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] .../SO-31353565/src/main/java/igb/so/SO31353565.java:[6,34]
package sun.security.tools.keytool does not exist
[ERROR] .../SO-31353565/src/main/java/igb/so/SO31353565.java:[12,50]
cannot find symbol
symbol: variable Main
location: class igb.so.SO31353565然后,根据Cannot find symbol (CertAndKeyGen) with JDK8的说法,我补充道:
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.2</version>
<configuration>
<fork>true</fork>
<compilerArgument>-XDignore.symbol.file</compilerArgument>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>到POM,编译成功。
发布于 2016-08-02 05:42:24
如果您使用的是Gradle而不是Maven,则可以将以下代码添加到构建中:
compileJava {
options.fork = true
options.forkOptions.executable = 'javac'
options.compilerArgs << "-XDignore.symbol.file"
}它对我起作用了!;)
发布于 2019-08-03 22:54:59
我是这样解决的:
Java to JAVA_HOME/lib/rt.jar
https://stackoverflow.com/questions/31353565
复制相似问题