簡體   English   中英

使用ant編譯時,rt.jar中的軟件包“不存在”

[英]Package from rt.jar “does not exist” when compiling with ant

我試圖通過使用內置的java.util.logging功能來改進HTTP連接的日志記錄。 但是在插入一行以激活代碼中的日志記錄后,我在螞蟻構建中遇到了一個我不理解的錯誤。

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?

旁注:我知道我可以使用日志記錄屬性進行設置。 這不是這個問題的重點。 我想知道為什么螞蟻會遇到Eclipse沒有的問題。

不要依賴“ sun”中的類,它們已被刪除-Oracle很久以前就購買了Sun。 標准的Java記錄器是java.util.logging.Logger

這個問題解釋了我的問題。

簡而言之:javac實際上並不針對rt.jar編譯。 相反,它使用jdk/lib/ct.sym ,其中包含大多數類作為存根,例如,不包含PlatformLogger。 有一個VM參數可以將其停用,但是當然不建議這樣做。

另一方面,Eclipse使用ct.sym作為友好建議,如果您喜歡像我的同事一樣進行編碼,則可以扔掉窗口。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM