2015-12-21 221 views
1

我想编译一个java文件,它使用包com.sun.xml.internal.messaging.saaj.soap.dynamic,使用ANT-1.9.3,但我收到错误包com.sun.xml.internal.messaging.saaj.soap.dynamic不存在

包com.sun.xml.internal.messaging.saaj.soap.dynamic不存在

我尝试编译两个JDK7和JDK 8和得到同样的错误。

我可以看到JDK的rt.jar内部存在该软件包。我也正确设置了JAVA_HOME

有人可以帮我解决这个问题吗?

+0

我不知道你使用的是什么编译系统,也许你可以提供更多的细节。在任何情况下,如果它是Gradle,请查看以下链接:https://discuss.gradle.org/t/problem-with-jar-that-c​​ontains-java-sources/2294 它可能有帮助。 – Bandreid

+0

请勿使用'com.sun。*'包。它们是内部API,不应直接由您自己的程序使用。他们可以在任何新的Java版本中改变或消失。 – Jesper

+0

“内部”一词甚至包含在软件包名称中...... – Holger

回答

4

不幸的是,这种行为可能是故意的,您的使用故意不受支持。如果你的代码中使用的Java6下进行编译,现在没有下

Java7或Java8那么你已经基本上降到犯规从一个版本到另一个,这些类可以被去除,或者他们可以从一个移动包到另一个

http://www.oracle.com/technetwork/java/faq-sun-packages-142232.html

http://bugs.java.com/bugdatabase/view_bug.do?bug_id=6778491见不能够编译一个类引用的一个可能的原因的技术说明“的com.sun。*”类,但其引发的相同的编译器尽管事实上引用的类是ex,但你看到的错误在rt.jar中。同样,对于甲骨文给予与之相关的错误报告的回应;)

不幸的是,使用未公开的,不受支持的API通常会有这种'咬你后面'的效果。

+0

感谢您的信息:) – springbatcher