Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为JAVA创建makefile时遇到问题_Java_Ubuntu_Makefile - Fatal编程技术网

为JAVA创建makefile时遇到问题

为JAVA创建makefile时遇到问题,java,ubuntu,makefile,Java,Ubuntu,Makefile,我想尝试为我的项目创建一个makefile。我在linux中运行这个,而不是在windows中,特别是在ubuntu中 这是我的项目目录的外观: project_root /src A.java B.java C.java D.java /bin #this is where I'd like the .class files /include A.jar B.

我想尝试为我的项目创建一个makefile。我在linux中运行这个,而不是在windows中,特别是在ubuntu中

这是我的项目目录的外观:

project_root
    /src
        A.java
        B.java
        C.java
        D.java
    /bin
       #this is where I'd like the .class files
    /include 
        A.jar
        B.jar
        C.jar
    makefile
    run.sh
JC = javac
CLASSPATH = .:include/*
SRCPATH = ./src/
OUTDIR = ./bin/

.SUFFIXES: .java .class

.java.class:
        $(JC) -cp $(CLASSPATH) $(OUTPATH) $*.java

CLASSES = \
        $(SRCPATH)A.java \
        $(SRCPATH)B.java \
        $(SRCPATH)C.java \
        $(SRCPATH)D.java 

default: classes

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

clean:
    $(RM) $(SRCPATH)*.class
这就是我的makefile的外观:

project_root
    /src
        A.java
        B.java
        C.java
        D.java
    /bin
       #this is where I'd like the .class files
    /include 
        A.jar
        B.jar
        C.jar
    makefile
    run.sh
JC = javac
CLASSPATH = .:include/*
SRCPATH = ./src/
OUTDIR = ./bin/

.SUFFIXES: .java .class

.java.class:
        $(JC) -cp $(CLASSPATH) $(OUTPATH) $*.java

CLASSES = \
        $(SRCPATH)A.java \
        $(SRCPATH)B.java \
        $(SRCPATH)C.java \
        $(SRCPATH)D.java 

default: classes

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

clean:
    $(RM) $(SRCPATH)*.class
在项目目录中运行make时,我得到以下输出:

make: *** No rule to make target `.java', needed by `javac'.  Stop.

有人能帮忙吗?

我认为在定义
.java.class
后缀规则时,行中的第一个字符不是制表符

在make中,每个配方行必须包含一个实际的制表符(不仅仅是空格)作为行中的第一个字符。如果第一个字符不是真正的制表符,那么它就不是配方行

没有出现语法错误的原因是,由于
类路径中的冒号,行看起来像一条规则;看起来是这样的:

javac -cp .:include/* ./bin/ .java
$*
在此扩展为零)make将其解析为定义三个目标,
javac
-cp
,每一个目标都依赖于
include/*
.java


这就是您的错误消息。

为什么?这给我的印象是,有人真的使用make for java吗?我从来没见过有人这样做。标准的Java构建工具是ant、maven、gradle。。。但是制造?把这个交给C组吧。