2016-02-02 39 views
1

我在Eclipse中使用Java进行文件操作,如编辑,搜索等。例如,我有两个文本文件。一个是“sales.txt”,另一个是“employees.txt”。用户应该输入开始日期和结束日期作为参数。然后该程序找到匹配的日期以及所有的日期。它从那里计算出发现销售日期的员工的佣金。从终端运行Java:找不到文本文件

问题出在这里: 我使用的是Kali Linux(Debian),我必须创建一个shell脚本来编译和运行带有命令行参数的java程序。

例如:shell脚本被称为“Runner”。 所以我输入:./Runner [开始日期] [结束日期]

一旦这样做,它编译罚款没有警告。但是当程序执行时,终端显示如下:cannot find employees or sales .txt 但是,当我在Eclipse中使用Run Configurations并编辑[开始日期] [结束日期]的参数面板时,程序运行良好。

Here is what the Projects panel looks like in eclipse:

编辑 - 下面是测试外壳脚本:

#! /bin/bash 

javac /$HOME/workspace/Java\ Projects/Database_2/src/src/*.java 
cd /$HOME/workspace/Java\ Projects/Database_2/src 
java src.Runner $1 $2 

编辑2 - 终端输出> ./testRunner 2015年1月1日2015年1月7日

java.io.FileNotFoundException: employees.txt (No such file or directory) 
    at java.io.FileInputStream.open0(Native Method) 
    at java.io.FileInputStream.open(FileInputStream.java:195) 
    at java.io.FileInputStream.<init>(FileInputStream.java:138) 
    at java.util.Scanner.<init>(Scanner.java:611) 
    at src.CommissionModifier.parseEmployees(CommissionModifier.java:101) 
    at src.CommissionModifier.process(CommissionModifier.java:15) 
    at src.Runner.handleArguments(Runner.java:10) 
    at src.Runner.main(Runner.java:6) 
java.io.FileNotFoundException: sales.txt (No such file or directory) 
    at java.io.FileInputStream.open0(Native Method) 
    at java.io.FileInputStream.open(FileInputStream.java:195) 
    at java.io.FileInputStream.<init>(FileInputStream.java:138) 
    at java.util.Scanner.<init>(Scanner.java:611) 
    at src.CommissionModifier.parseSales(CommissionModifier.java:135) 
    at src.CommissionModifier.process(CommissionModifier.java:16) 
    at src.Runner.handleArguments(Runner.java:10) 
    at src.Runner.main(Runner.java:6) 
+0

考虑添加stacktrace的文本,而不是提供屏幕截图。 – jheimbouch

+0

我们不知道你的脚本文件里有什么文件或文件与你运行它的地方进行比较...... –

+0

你是否在通过eclipse执行时从同一目录运行java文件? –

回答

0

在eclipse中,工作文件夹是项目文件夹。看看你的脚本,那可能是/ $ HOME/workspace/Java \ Projects/Database_2。我敢打赌你的文件也在这个文件夹中,这就是为什么它在eclipse中工作的原因。

从脚本运行时,您将将文件夹更改为/ $ HOME/workspace/Java \ Projects/Database_2/src,该文件可能没有您的文件。

如果这些假设是真实的,那么您的脚本需要cd到/ $ HOME/workspace/Java \ Projects/Database_2中。 Java可能无法从那里找到你的类,所以你需要将类路径添加到命令行参数中。

#! /bin/bash 

javac /$HOME/workspace/Java\ Projects/Database_2/src/src/*.java 
cd /$HOME/workspace/Java\ Projects/Database_2 
java -cp src src.Runner $1 $2 
+0

谢谢你做到了! –

+0

很酷。如果你不想再对你的问题提供任何帮助,你应该将答案标记为接受。 –