2015-12-02 143 views
3

我想为我的java程序编写一个makefile。我试过在网上查找,这是我想出的。Java Makefile“没有规则制定目标”

JFLAGS = -g 

JC = javac 

JVM = java 

FILE= 

.SUFFIXES: .java .class 

.java.class: 

     $(JC) $(JFLAGS) $*.java 

CLASSES = banker.java 

MAIN = Main 

default: classes 

classes: $(CLASSES:.java=.class) 

run: classes 
    $(JVM) $(MAIN) 

我收到写着

No rule to make target 'banker.class', needed by 'classes'. Stop. 

错误我只有一类:banker.java

+3

我不知道这个答案,但你为什么要使用Makefile? (而不是像Gradle,Maven或Ant之类的东西) –

+1

使用Make构建Java项目是非常不寻常的。你想使用Make的任何特定原因?如果不是的话,你可以用Ant,Maven(或其他许多基于Java的工具之一)更好。 – Thilo

+0

这是一个家庭作业。我的教授想要跑进企鹅服务器。 – jynx678

回答

0

看起来banker.java是不是在同一个目录中生成文件。

如果没有,您需要,而不是说: “班班=相对/路径/到/ banker.java”

因此,举例来说,如果你有这样的目录结构:

MyProject 
    -jsrc 
    -banker.java 
    -jbin 
    -Makefile 

和你banker.java是MyProject的/ JSRC,那么你需要改变

CLASSES = banker.java 

CLASSES = jsrc/banker.java 

,除非你想要的.class文件也可以在JSRC,您需要更改

$(JC) $(JFLAGS) $*.java 

$(JC) -d $(JCLASSDIR)/. $(JFLAGS) $*.java 

并添加

JCLASSDIR=jbin 

在顶部

JFLAGS = -g 

JC = javac 

JCLASSDIR=jbin 

JVM = java 

FILE= 

.SUFFIXES: .java .class 

.java.class: 

     $(JC) -d $(JCLASSDIR)/. $(JFLAGS) $*.java 

CLASSES = jsrc/banker.java 

MAIN = Main 

default: classes 

classes: $(CLASSES:.java=.class) 

run: classes 
    $(JVM) $(MAIN) 
+0

问题已解决!感谢所有帮助过我的人 – jynx678

相关问题