2009-12-30 29 views
1

我在同一個包中有一個接口&它的實現類。我在命令行中使用javac來編譯它們。我能夠成功編譯接口類,但是在編譯接口類之後嘗試編譯實現類時,出現錯誤 - 找不到符號。但是,因爲它的實現接口&都在同一個文件夾中,所以如果我執行Javac *。我能夠編譯它們兩個。Java編譯器行爲問題

有人可以幫我理解這種行爲嗎?感謝您的時間

+0

你能澄清一下嗎?你說你不能「在編譯接口類後編譯實現類」,但是如果你「做一個Javac」,它就可以工作。 「做一個javac」是大多數人稱之爲「編譯類」的東西。那麼你能給我們你正在使用的實際命令行嗎? – phtrivier 2009-12-30 09:32:06

+0

它可能有助於準確顯示您輸入的命令以及錯誤消息的確切全文。 – MatrixFrog 2009-12-30 09:32:28

+0

我的意思是Javac *。 – Ravishankar 2009-12-30 09:46:50

回答

1

您必須同時編譯這兩個文件或在javac的類路徑中添加第一次運行的.class文件。 javac不會嘗試變得聰明,也不會搜索您的硬盤上可能解析丟失符號的文件。如果你沒有傳入任何東西,它不會找到它。

5

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

+0

這就是確切的解決方案。 – JCasso 2009-12-30 09:36:18