2011-05-08 100 views
4

我有點新的使用CMD線的javac編譯和我有麻煩編譯這個簡單的基本接口類編譯Java使用命令行JAVAC

package com.apress.prospring2.ch03.di; 

/** 
* @author janm 
*/ 
public interface Encyclopedia { 

    Long findLong(String entry); 

} 

package com.apress.prospring2.ch03.di; 

import java.util.Map; 
import java.util.HashMap; 

/** 
* @author janm 
*/ 
public class HardcodedEncyclopedia implements Encyclopedia { 
    private Map<String, Long> entryValues = new HashMap<String, Long>(); 

    public HardcodedEncyclopedia() { 
     this.entryValues.put("AgeOfUniverse", 13700000000L); 
     this.entryValues.put("ConstantOfLife", 326190476L); 
    } 

    public Long findLong(String entry) { 
     return this.entryValues.get(entry); 
    } 
} 

我可以很容易地編譯使用javac Encyclopedia.java但是當我嘗試編譯HardcodedEncyclopedia的.java我得到百科全書

HardcodedEncyclopedia.java:9: cannot find symbol 
symbol: class Encyclopedia 
public class HardcodedEncyclopedia implements Encyclopedia { 
              ^
1 error 

有人能告訴我如何解決這個問題,而不使用Ant或Maven?謝謝:)

回答

1

嘗試:

javac Bar.java Foo.java 

這是考慮到他們是在同一個包

2

我懷疑你正試圖從com/apress/prospring2/ch03/di目錄內編譯HardcodedEncyclopedia.java。儘管Encyclopedia.java是在同一目錄下,javac的需要知道如何找到om.apress.prospring2.ch03.di包其預計將在您可以指定這樣的類路徑:

javac -cp ../../../../.. HardcodedEncyclopedia.java 

或者你可以去到根目錄暗示classpath中作爲當前目錄,如下所示:

cd ../../../../.. 
javac com/apress/prospring2/ch03/di/HardcodedEncyclopedia.java 
3

您需要編譯你從你的包的頂層類,所以在這種情況下,你需要在目錄裏的「COM」坐鎮。

然後,你可以做你的編譯:

javac -cp . com/apress/prospring2/ch03/di/*.java