[英]Maven can't compile using rt.jar
我的項目使用sun.security.tools.keytool
在 JDK 1.8 下生成證書,這個包可以在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
,它就會失敗!
誰能告訴我這怎么會發生?
我創建了一個 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
然后,根據用 JDK8 找不到符號 (CertAndKeyGen) ,我補充說:
<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,編譯成功。
如果您使用 Gradle 而不是 Maven,您可以將其添加到您的構建中:
compileJava {
options.fork = true
options.forkOptions.executable = 'javac'
options.compilerArgs << "-XDignore.symbol.file"
}
它對我有用! ;)
我是這樣解決的:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.