1. 程式人生 > >執行ant指令碼提示,錯誤: 找不到符號的 解決辦法

執行ant指令碼提示,錯誤: 找不到符號的 解決辦法

在執行ant指令碼時,我們一般都會用到javac命令來對專案進行編譯。當執行javac命令對專案編譯時,肯定需要依賴專案的jar包,此外還要引用一些jdk的jar包,這就需要在ant的javac中配置引入相關的jar包,如果在這些jar沒有在ant中正確引入,則有可能會報“錯誤: 找不到符號”的異常:
這裡寫圖片描述
如果遇到這樣的異常,一般都是專案編譯依賴的jar包沒有正確引入而引起的,這時就檢查編譯依賴的jar包是否都正確引入了。
但是,有時候就算正確的引入了jar包,也有可能報這樣的錯誤,特別是引用jdk裡面的jar的時候,就像我的某個專案引用了jdk的rt.jar。

ant配置:
這裡寫圖片描述


javac通過classpath標籤把專案編譯依賴的jar包引入進來,我這裡通過build.classpath指定了依賴的jar包的路徑:
這裡寫圖片描述
可以看到,專案編譯時引入了專案lib下所有的jar包,同時也引入了jdk中的jar包,通過這樣的配置就把javac依賴的jar引入進來了,而且正確無誤,可為什麼就是報錯呢???
出現這樣的問題在於javac命令的行為。當javac在編譯程式碼時,當他嘗試從rt.jar中找尋對應的類檔案時,他會預設從對應的符號表檔案ct.sym (同樣在jre/lib/下)中查詢該類是否存在,由於ct.sym中有意或無意的遺失了部分rt.jar中的類,或者根本就不存在ct.sym時,就算正確引入了jar包也會報上面的錯,這時候就需要對javac命令配置,使其在編譯時不用檢查符號表,而是直接查詢jar包:
增加配置引數:-XDignore.symbol.file
這裡寫圖片描述