gpt4 book ai didi

java - Java 的 Shell 脚本不工作

转载 作者:行者123 更新时间:2023-11-30 02:57:19 26 4
gpt4 key购买 nike

我正在使用 make 文件创建一个简单的 shell 脚本来执行 Java 程序,makefile 如下:

top:
javac -d classfiles -sourcepath src src/kruskal.java
test:
echo java -classpath classfiles kruskal \$\* > kruskal
chmod +x kruskal
clean:
rm -f classfiles/"/".class

但是,当我运行 make test 然后尝试执行我的程序(它接受命令行参数)时,java 尝试使用参数“-classpath”和“classfiles”作为参数来运行该程序,导致程序抛出文件未找到异常。我正在运行该程序:

kruskal g1.txt 

我做错了什么吗?这是我第一次使用 shell 脚本,非常感谢任何帮助。

编辑:这也是确切的错误:

java.io.FileNotFoundException: classfiles (Access is denied)
at java.io.FileInputStream.open0(Native Method)
at java.io.FileInputStream.open(Unknown Source)
at java.io.FileInputStream.<init>(Unknown Source)
at java.util.Scanner.<init>(Unknown Source)
at kruskal.readInputs(kruskal.java:20)
at kruskal.main(kruskal.java:172)
Exception in thread "main" java.lang.NullPointerException
at kruskal.BFS(kruskal.java:132)
at kruskal.main(kruskal.java:177)

最佳答案

要在 Makefile 中转义 $,请使用另一个 $kruskal 文件的当前内容实际上是 java -classpath classpath kruskal * ,并且 * 使用当前目录中的文件进行扩展,即 类路径等等。或者更糟糕的是,* 已经通过运行 echo 命令的 shell 进行了扩展。

因此,要使 Makefile 行正确:

test:
echo "java -classpath classfiles kruskal \$$*" > kruskal

关于java - Java 的 Shell 脚本不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36873796/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com