[英]Shell Script for Java not working
我正在使用一個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”作為參數來運行程序,從而導致程序拋出FileNotFoundException。 我正在使用以下程序運行該程序:
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 *
並且*
用當前目錄中的文件擴展,該文件是classpath
等。 甚至更糟的是, *
已經通過運行echo
命令的shell擴展了*
。
因此,使Makefile
行正確:
test:
echo "java -classpath classfiles kruskal \$$*" > kruskal
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.