Java makefile未正确编译
下面是makefile代码Java makefile未正确编译,java,makefile,javac,Java,Makefile,Javac,下面是makefile代码 Spell_Checker.class: Dictionary.class Spell_Checker.java javac Spell_Checker.java Dictionary.class: Dictionary.java javac Dictionary.java 下面是我在终端内部键入make时生成文件的错误日志 javac Dictionary.java Picked up _JAVA_OPTIONS: -Xmx32m javac S
Spell_Checker.class: Dictionary.class Spell_Checker.java
javac Spell_Checker.java
Dictionary.class: Dictionary.java
javac Dictionary.java
下面是我在终端内部键入make时生成文件的错误日志
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。谢谢 您需要指定一个
类路径来与编译器一起搜索。通常的方法是为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
看起来您的类在一个包中,但您的源文件不在相应的目录中。比如说你有:
package mypackage;
然后,您的源文件应位于目录mypackage
中,并且您的makefile应为:
mypackage/Dictionary.class: mypackage/Dictionary.java
javac $?
诸如此类。这里不赞成可能重复发布代码和错误的图像,因为这使我们更难帮助您解决问题。最好是直接将相关代码和/或错误复制粘贴到问题中。请阅读,然后回答相应的问题。我建议先使用IDE,然后再使用为Java设计的构建工具,如maven或gradle,这样您就不需要编写这样的规则。不幸的是,我不允许使用IDE来完成这项工作。我编辑了这个问题,添加了复制的代码和错误。我认为应该是javac-cp。Spell_Checker.java
,以便它能够找到另一个类。似乎这个问题很可能与make
无关:如果您在没有make
的情况下进行复制(即:使用shell中的javac
),可能会更容易找到帮助,因为我不认为很多人会将make与java一起使用