这是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时遇到了麻烦。谢谢!
答案 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 $?
等等。