我对使用cmd行javac进行编译有点新手,我在编译这个简单的Base-Interface类时遇到了麻烦
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轻松编译Encyclopedia但是当我尝试编译HardcodedEncyclopedia .java时我得到了
HardcodedEncyclopedia.java:9: cannot find symbol
symbol: class Encyclopedia
public class HardcodedEncyclopedia implements Encyclopedia {
^
1 error
有人可以告诉我如何在不使用Ant或Maven的情况下解决这个问题吗?谢谢:))
答案 0 :(得分:3)
您需要从包的顶层编译类,因此在这种情况下,您需要位于“com”所在的目录中。
然后你可以进行编译:
javac -cp . com/apress/prospring2/ch03/di/*.java
答案 1 :(得分:2)
我怀疑您正在尝试从HardcodedEncyclopedia.java
目录中编译com/apress/prospring2/ch03/di
。即使Encyclopedia.java
位于同一目录中,javac也需要知道如何找到预期所在的om.apress.prospring2.ch03.di
包。您可以像这样指定类路径:
javac -cp ../../../../.. HardcodedEncyclopedia.java
或者您可以转到根目录以将类路径表示为当前目录,如下所示:
cd ../../../../..
javac com/apress/prospring2/ch03/di/HardcodedEncyclopedia.java
答案 2 :(得分:1)
尝试:
javac Bar.java Foo.java
这是考虑到它们在同一个包中