我在Java文件中使用sun.net.www.protocol.http.ntlm.NTLMAuthenticationCallback
。
代码从Idea构建并运行良好,但在使用gradle compileJava时失败。
我收到此错误:
D:\source\msnavclient\MsNavClient.java:5: error: package sun.net.www.protocol.http.ntlm does not exist
import sun.net.www.protocol.http.ntlm.NTLMAuthenticationCallback;
^
D:\source\msnavclient\MsNavClient.java:20: error: cannot find symbol
NTLMAuthenticationCallback.setNTLMAuthenticationCallback(new NTLMAuthenticationCallback()
^
symbol: class NTLMAuthenticationCallback
location: class MsNavClient
D:\source\msnavclient\MsNavClient.java:20: error: cannot find symbol
NTLMAuthenticationCallback.setNTLMAuthenticationCallback(new NTLMAuthenticationCallback()
^
symbol: variable NTLMAuthenticationCallback
location: class MsNavClient
3 errors
我发现NTLMAuthenticationCallback
类在jre/lib/rt.jar
中,并尝试直接在build.gradle
文件中添加依赖项,但问题仍然存在。
这是build.gradle
文件:
apply plugin: 'java'
repositories {
mavenCentral()
}
dependencies {
// compile files('C:\\Program Files\\Java\\jdk1.8.0_131\\jre\\lib\\rt.jar')
testCompile group: 'junit', name: 'junit', version: '4.12'
}
有人可以帮忙吗?
答案 0 :(得分:0)
我不知道这是否可取,但请尝试使用以下内容(来自here)。使用它在这个问题的一个简单例子中为我工作:
compileJava {
options.compilerArgs += ["-XDignore.symbol.file", "-Xdoclint:none", "-Xlint:none", "-nowarn"]
options.fork = true
options.forkOptions.executable = 'javac'
}
答案 1 :(得分:0)
从@ michael-easter的答案开始,我发现compileJava任务不使用javac使用的相同程序。并发现这个workarround让rt.jar包含在类路径中:
compileJava {
options.bootClasspath = "${System.env.JAVA_HOME}/jre/lib/rt.jar"
}