2016-04-26 17 views
1

を働いていない、メイクファイルは、次のとおりです。シェルスクリプトのJavaのため、私はJavaプログラムを実行するための簡単なシェルスクリプトを作成するために、メイクファイルを使用しています

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

をしかし、私はテストを行う実行するときに実行しよう私のprogram(コマンドライン引数を取ります)javaは、引数として "-classpath"および "classfiles"引数を使用してプログラムを実行しようとします。これにより、プログラムはFileNotFoundExceptionをスローします。プログラムを実行しています:

kruskal g1.txt 

私は何か間違っていますか?これは初めてシェルスクリプトを使って作業することです。どんな助けもありがとうございます。

編集:ここでは、正確なエラーは同様である。

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) 

答えて

2

$を使用Makefileで$を逃れるために。 kruskalファイルの現在の内容は、実際にはjava -classpath classpath kruskal *および*であり、現在のディレクトリのファイルでは、classpathです。あるいは、*がすでにechoコマンドを実行しているシェルで展開されている場合もあります。

のでMakefileラインが正しい作るために:

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

ありがとうございました!実際にはカレントディレクトリのファイルを展開して引数として使用していたことが分かります。 –

関連する問題