2010-05-09 59 views
0

我有一个makefile的问题。我有三堂课。他们做很简单的事情。在减法上做一个加法,最后一个将实例化这两个并简单地打印结果加法和减法。与javac的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 
+2

不使用生成文件的Java。使用蚂蚁或maven。 – Bozho 2010-05-09 18:39:26

+1

我想使用makefile,因为我还必须使用java和C++文件。 – mistique 2010-05-09 18:41:28

+0

我知道makefile,但不是java。我没有看到这个makefile是如何工作的,或者它是如何产生这个错误的。你只是在运行'make',还是你给它一个目标,比如'make Pluss.class'? – Beta 2010-05-09 19:01:12

回答

0

我解决了它。这是包裹的问题。我编辑我的文件在NetBeans和保持:

包操作

到他们中的每一个

,所以我就运行编译但现在没有运行

傻问题... 。

JCC = javac的

JCR = java的

JFLAGS = -g

默认:Operation.class Plus.class Minus.class

Plus.class:Plus.java $(JCC)$(JFLAGS)Plus.java

减。类:Minus.java $(JCC)$(JFLAGS)Minus.java

Operation.class:Operation.java Plus.java Minus.java $(JCC)$(JFLAGS)Operation.java Plus.java减.java

运行: $(JCR)操作

清洁: $(RM)的* .class

+0

尝试使用'101'按钮将'Makefile'格式化为代码。 – trashgod 2010-05-09 19:46:55

0

需要-g Plus.java Minus.java运行javac(没有的.class)

+0

我不认为我理解。我告诉你我的makefile,而不是也许我CAND找出这样: JCC = javac的 JCR = java的 JFLAGS = -g 默认:Operation.class Plus.class:Plus.java \t $( JCC)$(JFLAGS)Plus.java Minus.class:Minus.java \t $(JCC)$(JFLAGS)Minus.java Operation.class:Operation.class \t $(JCC)$(JFLAGS) Operation.class run:Operation.cla SS \t $(JCR)Operation.class \t 清洁: \t $(RM)的* .class – mistique 2010-05-09 18:46:04

3

您需要的源文件的名称传递给javac的:

javac -g Plus.java 

一个更好的选择可能是:

javac -g *.java 

Java世界中很少有人直接调用javac或使用makefile。大多数人开发时使用IDE:

的Eclipse:http://www.eclipse.org
Netbeans的:http://www.netbeans.org

然后进行最后的更全面的构建工具/自动构建:

蚂蚁:http://ant.apache.org/
Maven的:http://maven.apache.org/

这两个都可以从make调用,或者实际上调用make自己,以便与您现有的构建系统sys TEM。编辑: 看来你有一个makefile的问题。看看这个工程:

JCC = javac 
JCR = java 
JFLAGS = -g 

all: 
[TAB]$(JCC) $(JFLAGS) *.java 

run: 
[TAB]$(JCR) Operation 

clean: 
[TAB]$(RM) *.class 

替换[TAB]与实际的制表符 - 正如你可能知道这是在化妆非常重要的!

+0

那东西。我目前正在开发一个项目,但我确实需要这些东西,而不是IDE。 – mistique 2010-05-09 18:49:01

+0

谢谢,但标签在那里。它只是没有出现在 – mistique 2010-05-09 19:14:49

+0

+1后面的'ant',尽管这样使用'make'会很有启发性。 – trashgod 2010-05-09 19:45:17

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