java编译问题。可能很简单

时间:2011-06-29 20:14:19

标签: java package javac

自从我广泛使用java以来​​已经有一段时间了,而我遇到的问题可能很简单。代码在linux系统上,我正在使用javac和其他命令行工具。

两个文件,第二个不会编译。这是第一个名为ITranslator.java的文件:

package org.helloopensource.greetings;

public interface ITranslator {
    public abstract String translate(String fromLanguage, String toLanguage, String word);
}

这是第二个,名为Greeting.java:

package org.helloopensource.greetings; 

public class Greeting {
    private ITranslator translator;

    public Greeting(ITranslator translator) {
            this.translator = translator;
     }

    public String sayHello(String language, String name) {
            return translator.translate("English", language, "Hello") + " " + name;
    }
}

当我尝试编译时,我得到:

> javac -classpath `pwd` Greeting.java
Greeting.java:4: cannot find symbol
symbol  : class ITranslator
location: class org.helloopensource.greetings.Greeting
    private ITranslator translator;
            ^
Greeting.java:6: cannot find symbol
symbol  : class ITranslator
location: class org.helloopensource.greetings.Greeting
    public Greeting(ITranslator translator) {
                    ^
2 errors

就像我说的那样,我怀疑这是一件简单的事,或者是一些愚蠢的我做错了。任何帮助将不胜感激。

谢谢,

肖恩。

2 个答案:

答案 0 :(得分:9)

Java要求在与其包名匹配的子目录中找到类文件。所以:

    mkdir -p org/helloopensource/greetings
    mv *.java org/helloopensource/greetings/
    javac -classpath . org/helloopensource/greetings/*.java

应该这样做。

答案 1 :(得分:0)

javac * .java