我的makefile有问题。我有三节课。他们做的很简单。一个在减法上做了一个加法,最后一个将实例化这两个并简单地打印出结果的加法和减法。
现在当我创建我的makefile时,我编译了我的Plus.java和我的Minus.java,但不知道如何编译主类,因为它取决于前两个。如果可能的话,我想从makefile编译并运行它。
当我尝试运行make时,我得到了上述结果:
javac -g Plus.class Minus.class
javac: invalid flag: Plus.class
Usage: javac <options> <source files>
use -help for a list of possible options
make: *** [Operation.class] Error 2
我不知道该怎么办;如果我的问题很简单,请原谅我,但我是新工作的。我搜索了很多网站,但没有回答。
这是我的Makefile:
JCC = javac
JCR = java
JFLAGS = -g
default: Operation.class
Plus.class: Plus.java
$(JCC) $(JFLAGS) Plus.java
Minus.class: Minus.java
$(JCC) $(JFLAGS) Minus.java
Operation.class: Operation.class
$(JCC) $(JFLAGS) Operation.class
run: Operation.class
$(JCR) Operation.class
clean:
$(RM) *.class
答案 0 :(得分:3)
您需要将源文件的名称传递给javac:
javac -g Plus.java
更好的选择可能是:
javac -g *.java
Java世界中很少有人直接调用javac或使用makefile。大多数人在开发时使用IDE:
Eclipse:http://www.eclipse.org
Netbeans:http://www.netbeans.org
然后是一个更全面的构建工具,用于最终/自动构建:
Ant:http://ant.apache.org/
Maven:http://maven.apache.org/
这两个都可以从make调用,或者实际调用make自己,以便与现有的构建系统集成。
编辑: 看来你有一个makefile问题。看看是否有效:
JCC = javac
JCR = java
JFLAGS = -g
all:
[TAB]$(JCC) $(JFLAGS) *.java
run:
[TAB]$(JCR) Operation
clean:
[TAB]$(RM) *.class
将[TAB]替换为实际制表符 - 您可能知道这在制作中非常重要!
答案 1 :(得分:0)
你需要运行javac -g Plus.java Minus.java(不是.class)
答案 2 :(得分:0)
试试这个。唉,管理Java类依赖是一个痛苦的使用make(在相对较大的项目中已经完成),所以你仍然应该认真考虑使用Ant或其他适当的工具。
JCC = javac
JCR = java
JFLAGS = -g
default: Operation.class
Plus.class: Plus.java
$(JCC) $(JFLAGS) Plus.java
Minus.class: Minus.java
$(JCC) $(JFLAGS) Minus.java
Operation.class: Operation.java Plus.class Minus.class
$(JCC) $(JFLAGS) Operation.java
run: Operation.class
$(JCR) Operation.class
clean: $(RM) *.class
答案 3 :(得分:0)
我解决了。这是包的问题。我在netbeans中编辑了我的文件并保持:
包裹操作
到他们每个人
所以我得到了编译操作,但现在它没有运行
愚蠢的问题......
JCC = javac
JCR = java
JFLAGS = -g
default: Operation.class Plus.class Minus.class
Plus.class: Plus.java
$(JCC) $(JFLAGS) Plus.java
Minus.class: Minus.java
$(JCC) $(JFLAGS) Minus.java
Operation.class: Operation.java Plus.java Minus.java
$(JCC) $(JFLAGS) Operation.java Plus.java Minus.java
run:
$(JCR) Operation
clean:
$(RM) *.class