rt.jar com.sun.istack.internal包

时间:2012-05-20 13:35:50

标签: java sun

jre附带了许多rt.jar中的库,其中一个是com.sun.istack.internal *。我需要com.sun.istack.internal.Nullable(我发现谷歌在其CacheBuilder 中使用的)的文档,我首先想到的是去docs.oracle.com找到它的文档在那里我一无所获。接下来转到源自jdk的源文件夹,我在所述文件夹中找不到com名称实体。接下来我看一下jre7的发布,看看所有的包和类,发现那里没有提到Nullable。虽然SO有一个mention of it,但没有具体的东西。我仍然感到困惑,如果需要,在哪里获得它的文档和src。我甚至在oracle看过遗留的sun api文档,但没有提到它。 oracle在哪里记录有关移植包的政策以及它们是标准的还是非标准的。他们必须在某处记录它只是因为我花了太多时间去那里。

请指点我。

编辑:实际上javax.annotation.Nullable正在谷歌CacheBuilder中使用,而不是com.sun.istack.internal.Nullable。 对于可能面临此问题的人:javax.annotation.Nullable现在不是Java SE的一部分,它正在jsr305 jar中移植。因此,如果您计划使用CacheBuilder或只是通过其代码,请在类路径中添加jsr305 jar,否则eclipse会混淆并指向com.sun.istack.intenal.Nullable,只要您将光标悬停在Nullable上

2 个答案:

答案 0 :(得分:12)

Guava不使用com.sun.istack.internal.Nullable。官方Java SE javadoc中未记录的所有内容都是内部代码,不应在应用程序中使用。

您可能正在寻找javax.annotation.Nullable,这是JSR305的一部分。

答案 1 :(得分:5)

以下是源代码的链接:

(此链接将来可能会中断,但您应该能够使用Google搜索找到相应的内容。)

在标准JDK / JRE发行版中找不到源代码或javadoc的原因是这是一个INTERNAL类。有一个长期的Oracle / Sun策略阻止开发人员编写依赖于Java内部类的代码。

FWIW - 这只是一个注释,其含义几乎就是类名所暗示的内容。


UPDATE - 显然,这种混淆的真正原因是你没有在你的构建路径中包含JSR305 jar。它是CacheBuilder的依赖项。然后,Eclipse类名完成正在尽力......但是失败了。