使用命令行JAVAC编译Java

时间:2011-05-08 10:39:53

标签: java

我对使用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的情况下解决这个问题吗?谢谢:))

3 个答案:

答案 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

这是考虑到它们在同一个包中