我在同一個包中有一個接口&它的實現類。我在命令行中使用javac來編譯它們。我能夠成功編譯接口類,但是在編譯接口類之後嘗試編譯實現類時,出現錯誤 - 找不到符號。但是,因爲它的實現接口&都在同一個文件夾中,所以如果我執行Javac *。我能夠編譯它們兩個。Java編譯器行爲問題
有人可以幫我理解這種行爲嗎?感謝您的時間
我在同一個包中有一個接口&它的實現類。我在命令行中使用javac來編譯它們。我能夠成功編譯接口類,但是在編譯接口類之後嘗試編譯實現類時,出現錯誤 - 找不到符號。但是,因爲它的實現接口&都在同一個文件夾中,所以如果我執行Javac *。我能夠編譯它們兩個。Java編譯器行爲問題
有人可以幫我理解這種行爲嗎?感謝您的時間
您必須同時編譯這兩個文件或在javac
的類路徑中添加第一次運行的.class
文件。 javac
不會嘗試變得聰明,也不會搜索您的硬盤上可能解析丟失符號的文件。如果你沒有傳入任何東西,它不會找到它。
Java編譯器查找一個文件名約定的方式包裝,如果您從您的classpath的根目錄的javac a.b.c.Interface
被解釋爲認準接口a/b/c/Interface.class
,編譯器會發現你的界面。即如果你的軟件包是D:\sources\a\b\c
,請在D:\sources
中啓動javac並編譯a\b\c\Impl.java
這就是確切的解決方案。 – JCasso 2009-12-30 09:36:18
你能澄清一下嗎?你說你不能「在編譯接口類後編譯實現類」,但是如果你「做一個Javac」,它就可以工作。 「做一個javac」是大多數人稱之爲「編譯類」的東西。那麼你能給我們你正在使用的實際命令行嗎? – phtrivier 2009-12-30 09:32:06
它可能有助於準確顯示您輸入的命令以及錯誤消息的確切全文。 – MatrixFrog 2009-12-30 09:32:28
我的意思是Javac *。 – Ravishankar 2009-12-30 09:46:50