使用Gradle编译时如何克服“package com.sun.xml.internal.xxx不存在”?

时间:2012-10-25 12:02:42

标签: gradle

我想编译使用某些Java已弃用的“sun”软件包的Java代码,Gradle编译任务因此错误而失败

error: package com.sun.xml.internal.ws.developer does not exist

我正在使用Hotspot JDK,我可以在那里看到这个包(所以它确实存在 - 在rt.jar文件中) 我还尝试将rt.jar本身添加到Gradle依赖项中:

compile files( 'C:/Program Files/Java/jdk1.7.0_05/jre/lib/rt.jar')

但没有效果

这是我的gradle -v输出:

------------------------------------------------------------
Gradle 1.2
------------------------------------------------------------

Gradle build time: Streda, 2012, september 12 10:46:02 UTC
Groovy: 1.8.6
Ant: Apache Ant(TM) version 1.8.4 compiled on May 22 2012
Ivy: 2.2.0
JVM: 1.7.0_05 (Oracle Corporation 23.1-b03)
OS: Windows 7 6.1 amd64

我还尝试将jaxws-rt.jar添加到classpath中 - 既没有效果也没有效果

我真的很感激任何帮助

感谢

1 个答案:

答案 0 :(得分:15)

Oracle的意图是在编译时无法访问这些类。

查看对this javac bug report的回复。

有关可能的解决方案,请参阅Using internal sun classes with javacjavac -XDignore.symbol.file开关应该解决这个问题 - 但我是一个gradle newb,并且看不到如何将其提供给gradle's JavaCompile。我最好的猜测是

  apply plugin: 'java' 
  compileJava.options.useAnt = true 
  compileJava.options.compilerArgs << "-XDignore.symbol.file" 

顺便提一下,ct.sym(在链接中引用)似乎是一个jar文件,它将所有可访问的类列为类存根。