Java makefile无法正确编译

时间:2018-02-11 21:34:24

标签: java makefile javac

这是makefile代码。

Spell_Checker.class: Dictionary.class Spell_Checker.java
    javac Spell_Checker.java

Dictionary.class: Dictionary.java
    javac Dictionary.java

当我在终端内输入make时,这是makefile的错误日志。

javac Dictionary.java
Picked up _JAVA_OPTIONS: -Xmx32m
javac Spell_Checker.java
Picked up _JAVA_OPTIONS: -Xmx32m
Spell_Checker.java:26: error: cannot find symbol
        Dictionary spell_check_this = new Dictionary(DICT_FILE);
        ^
symbol:   class Dictionary
location: class Spell_Checker
Spell_Checker.java:26: error: cannot find symbol
        Dictionary spell_check_this = new Dictionary(DICT_FILE);
                                          ^
symbol:   class Dictionary
location: class Spell_Checker 2 errors
makefile:2: recipe for target 'Spell_Checker.class' failed
make: *** [Spell_Checker.class] Error 1

我是makefile的新手,我有一个名为Spell_Checker.java的java文件,调用Dictionary.java来检查文件是否拼写正确。我在弄清楚如何正确编写makefile时遇到了麻烦。谢谢!

2 个答案:

答案 0 :(得分:0)

您需要指定CLASSPATH以与编译器一起搜索。通常的方法是为Makefile中的类似事件分配变量。我也总是提供"所有" "清洁"目标。这可能看起来像,

JAVAC = javac
CLASSPATH = -cp .

all: Dictionary.class Spell_Checker.class

clean:
        rm -f *.class

Dictionary.class: Dictionary.java
        $(JAVAC) $(CLASSPATH) Dictionary.java

Spell_Checker.class: Dictionary.class Spell_Checker.java
        $(JAVAC) $(CLASSPATH) Spell_Checker.java

答案 1 :(得分:0)

您的类似乎在一个包中,但您的源文件不在相应的目录中。比如你说:

 package mypackage;

然后你的源文件应该在mypackage目录中,你的makefile应该是:

mypackage/Dictionary.class: mypackage/Dictionary.java
    javac $?

等等。