2017-06-28 40 views
0

我试图通过使用内置的java.util.logging特性来改进HTTP连接的日志记录。但在插入一行来激活代码中的日志记录之后,我在我的蚂蚁构建中出现了一个错误,我不明白。来自rt.jar的包在用蚂蚁编译时“不存在”

error: package sun.util.logging does not exist 
    import sun.util.logging.PlatformLogger; 
     ^

sun.util.logging.PlatformLogger位于rt.jar中应该始终是在classpath据我所知。而且这不是一个“内部API”,在编译期间会发出警告。该代码在Eclipse中正常工作。

Ant在JDK 1.8.0_60上运行,就像我的Eclipse项目一样。我期望它使用该安装中的rt.jar。为什么它不能访问一些选择类?或者我看着错误的核心类集合,并且javac任务使用了不同的rt.jar?

旁注:我知道我可以使用日志记录属性来设置它。这不是这个问题的关键。我想知道为什么ant有一个Eclipse没有的问题。

+0

我开始认为“某人”在我的Eclipse工作区中删除了rt.jar上的所有访问限制,并且我应该永远无法首先访问“PlatformLogger”。但问题仍然存在,javac如何知道哪些类可能不被代码引用? – Stroboskop

回答

0

This question explains my problem.

简而言之:javac的不实际编译反对rt.jar。相反,它使用jdk/lib/ct.sym,其中包含大多数类作为存根,但例如,不是PlatformLogger。有一个虚拟机参数去激活它,但这当然不鼓励。

另一方面,Eclipse使用ct.sym作为一个友好的建议,如果你喜欢像我的同事一样编码,你可以抛出窗口。

0

不要依赖“阳光下”的课程,它们已被删除 - 甲骨文很久以前就收购了Sun。该标准的Java记录仪是java.util.logging.Logger

+1

好吧,当然。但sun.net.www.protocol.http.HttpURLConnection仍然在内部使用这个,我需要以某种方式触发它。另外我的问题是关于为什么没有找到rt.jar中的类。 – Stroboskop