Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.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 又一个",;“多目标模式”;生成文件错误_Java_Makefile - Fatal编程技术网

Java 又一个",;“多目标模式”;生成文件错误

Java 又一个",;“多目标模式”;生成文件错误,java,makefile,Java,Makefile,我试着四处看看,但我在这里看到的所有问题都太高了,我无法理解 这是我的makefile: compile: bin src cmp bin: mkdir bin src: find src -name "*.java" > sources.txt cmp: javac -cp biuoop-1.4.jar -d bin @sources.txt run: java -cp biuoop-1.4.jar:bin:src/resources Ass6Game jar: jar -cmf Ass

我试着四处看看,但我在这里看到的所有问题都太高了,我无法理解

这是我的makefile:

compile: bin src cmp
bin: mkdir bin
src: find src -name "*.java" > sources.txt
cmp: javac -cp biuoop-1.4.jar -d bin @sources.txt
run: java -cp biuoop-1.4.jar:bin:src/resources Ass6Game
jar: jar -cmf Ass6Game.jar Manifest.txt -C bin . -C src resources

当我尝试运行
makecompile
时,我得到了“多目标模式”错误。我做错了什么?

您的makefile语法不正确

问题是

一般来说,规则如下所示:

targets : prerequisites
   recipe
   …
targets : prerequisites ; recipe
   recipe
或者像这样:

targets : prerequisites
   recipe
   …
targets : prerequisites ; recipe
   recipe
然而,您的配方行位于必备位置,因此java命令中的
令人困惑

您的makefile应该如下所示

compile: bin src cmp
bin: ; mkdir bin
src: ; find src -name "*.java" > sources.txt
cmp: ; javac -cp biuoop-1.4.jar -d bin @sources.txt
run: ; java -cp biuoop-1.4.jar:bin:src/resources Ass6Game
jar: ; jar -cmf Ass6Game.jar Manifest.txt -C bin . -C src resources
compile: bin src cmp
bin:
        mkdir bin
src:
        find src -name "*.java" > sources.txt
cmp: 
        javac -cp biuoop-1.4.jar -d bin @sources.txt
run:
        java -cp biuoop-1.4.jar:bin:src/resources Ass6Game
jar:
        jar -cmf Ass6Game.jar Manifest.txt -C bin . -C src resources
还是像这样

compile: bin src cmp
bin: ; mkdir bin
src: ; find src -name "*.java" > sources.txt
cmp: ; javac -cp biuoop-1.4.jar -d bin @sources.txt
run: ; java -cp biuoop-1.4.jar:bin:src/resources Ass6Game
jar: ; jar -cmf Ass6Game.jar Manifest.txt -C bin . -C src resources
compile: bin src cmp
bin:
        mkdir bin
src:
        find src -name "*.java" > sources.txt
cmp: 
        javac -cp biuoop-1.4.jar -d bin @sources.txt
run:
        java -cp biuoop-1.4.jar:bin:src/resources Ass6Game
jar:
        jar -cmf Ass6Game.jar Manifest.txt -C bin . -C src resources
或者实际使用make提供给你的东西

compile: bin src cmp
bin: ; mkdir bin
src: ; find src -name "*.java" > sources.txt
cmp: ; javac -cp biuoop-1.4.jar -d bin @sources.txt
run: ; java -cp biuoop-1.4.jar:bin:src/resources Ass6Game
jar: ; jar -cmf Ass6Game.jar Manifest.txt -C bin . -C src resources
compile: bin src cmp
bin:
        mkdir bin
src:
        find src -name "*.java" > sources.txt
cmp: 
        javac -cp biuoop-1.4.jar -d bin @sources.txt
run:
        java -cp biuoop-1.4.jar:bin:src/resources Ass6Game
jar:
        jar -cmf Ass6Game.jar Manifest.txt -C bin . -C src resources
JAR:=biuoop-1.4.JAR
来源:=$(shell find src-name'*.java')
#或者如果src是一个没有子目录的单一目录
#来源:=$(通配符src/*.java)
GAMEJAR:=Ass6Game.jar
冒牌货:全部
全部:$(罐)
箱子:
mkdir-bin
$(JAR):$(来源)| bin
javac-cp$@-d bin$^
#看http://www.gnu.org/software/make/manual/make.html#Force-“部队”在这里的行动目标。
$(GAMEJAR):强制
jar-cmf$@Manifest.txt-C bin-C src资源
部队:;
.骗子:快跑
运行:$(GAMEJAR)
java-cp$(JAR):bin:src/resources$(GAMEJAR)
这就更好地遵循了这一原则,实际上让make可以根据需要智能地重建您的文件