来自rt.jar"的套餐不存在"用ant

时间:2017-06-28 16:22:59

标签: java eclipse ant

我试图通过使用内置的java.util.logging功能来改进HTTP连接的日志记录。但是在插入一行以激活代码中的日志记录后,我的ant构建中出现了一个我不理解的错误。

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

sun.util.logging.PlatformLogger位于rt.jar中,据我所知,它应始终位于类路径中。它不是一个内部API"这会在编译期间发出警告。该代码在Eclipse中运行良好。

Ant和我的Eclipse项目一样,在JDK 1.8.0_60上运行。我希望它能使用该安装中的rt.jar。为什么它不能访问某些选择类?或者我正在查看错误的核心类集,而javac任务是使用不同的rt.jar?

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

2 个答案:

答案 0 :(得分:0)

不要依赖“sun”中的课程,他们已被删除 - 很久以前Oracle收购了Sun.标准Java记录器是java.util.logging.Logger

答案 1 :(得分:0)

This question explains my problem.

简而言之:javac实际上并没有针对rt.jar进行编译。相反,它使用包含大多数类作为存根的jdk/lib/ct.sym,但是例如不是PlatformLogger。有一个VM参数可以停用它,但当然不鼓励这样做。

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