如果 Eclipse 确实说“未找到源代码”,那么它(此时)正在谈论某个东西的源代码。
如果您设法从 Eclipse 运行该类,那么 Eclipse 就能够编译它,因此它知道源代码在哪里。所以它一定是其他东西的源代码。我最好的猜测是它找不到标准 Java 类库的源代码,这可能意味着 Eclipse 运行在 JRE 安装而不是 JDK 安装上。
(如果我的理论是正确的,那么“未找到源”文本将嵌入到异常堆栈跟踪中......)
这也可能是一个构建问题,但我对此表示怀疑,因为如果该类没有构建,当您在 Eclipse 中查看源文件时,您会看到错误标记,并且当您尝试运行它时,Eclipse 会抱怨。如果源文件位于错误的目录中,Eclipse 也会抱怨。
问题的第二部分是让你的应用程序找到"inData.txt"
文件。那应该很简单。当您尝试打开具有相对路径名的文件时,Java 库将尝试解析相对于应用程序的“当前目录”的路径名。默认情况下,当您从 Eclipse 运行应用程序时,这将是您启动 Eclipse 时 shell 所在的目录;例如
$ cd /home/josh/somedir
$ eclipse &
...默认当前目录应该是“/home/josh/somedir”。
如果默认当前目录不正确,您有多种选择,包括:
- 在启动 Eclipse 之前将目录更改为正确的目录。
- 使用 Eclipse 的“运行配置”面板选择应用程序的启动配置,并更改启动器的当前目录设置。
- 将源代码中的相对路径名更改为文件的正确绝对路径名。
跟进
Exception in thread "main" java.io.FileNotFoundException: inData.txt (The system cannot find the file specified)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(Unknown Source)
at java.io.FileInputStream.<init>(Unknown Source)
at java.io.FileReader.<init>(Unknown Source)
at pack.Ch2_PrExercise17.main(Ch2_PrExercise17.java:8)
“未知来源”消息意味着 JVM(不是 Eclipse)无法找到生成完整堆栈跟踪所需的信息。您似乎正在使用删除了调试信息的“rt.jar”文件执行。您可以忽略这个问题,但要修复它,您需要查看正在使用的 JVM,以及为什么“rt.jar”没有调试信息。
真正的问题是FileNotFoundException
例外,我对此的诊断(如上所述)成立。 “当前目录”并不是解析相对路径名所需的目录。请参阅上文了解可能的解决方案。