【问题标题】:Running Java from terminal : cannot find text files从终端运行 Java:找不到文本文件
【发布时间】:2016-02-02 22:37:22
【问题描述】:

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

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

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

这样做后,它编译得很好,没有警告。但是当程序执行时,终端会显示:cannot find employees or sales .txt 但是当我在 Eclipse 中使用 Run Configurations 并为 [start date] [end date] 编辑 Arguments 面板时,程序运行良好。

Here is what the Projects panel looks like in eclipse:

编辑 - 这是测试 shell 脚本:

#! /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 01/01/2015 01/07/2015

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)

【问题讨论】:

  • 考虑添加堆栈跟踪的文本而不是提供屏幕截图。
  • 我们不知道您的脚本文件中有什么,也不知道这些文件与您运行它的位置相比...
  • 你是从与通过eclipse执行时相同的目录运行java文件吗?
  • @JamesBuck 是的。我刚刚发布了我的测试 shell 脚本
  • @jheimbouch 需要我使用 strace,对吗?

标签: java linux terminal


【解决方案1】:

在 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

【讨论】:

  • 酷。如果您不想在您的问题上获得更多帮助,您应该将答案标记为已接受。
猜你喜欢
  • 1970-01-01
  • 2011-09-26
  • 1970-01-01
  • 2020-05-30
  • 2013-11-12
  • 2019-03-15
  • 2020-01-16
  • 2017-09-07
  • 2019-03-03
相关资源
最近更新 更多