我是编程世界的新手,我正在尝试做一个简单的程序,我从文件中读取并输出一个数字。我相信我在代码中设置了所有内容,我是否需要对.txt文件的位置做任何特殊处理以使程序读取文件?
package pack;
import java.util.*;
import java.io.*;
public class Ch2_PrExercise17 {
public static void main(String[] args)
throws FileNotFoundException{
Scanner inFile = new Scanner(new FileReader("inData.txt"));
int num1;
num1 = inFile.nextInt();
System.out.println(num1);
}
}
我得到的例外情况如下;
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)
答案 0 :(得分:2)
如果Eclipse真的说“找不到源”,那么它就是在谈论某些事情的源代码。
如果您正在设法从Eclipse运行该类,那么Eclipse已经能够编译它,因此它知道源代码的位置。所以它必须是其他东西的源代码。我最好的猜测是它找不到标准Java类库的源代码,这可能意味着Eclipse在JRE安装上运行而不是JDK安装。
(如果我的理论是正确的,那么“源未找到”文本嵌入在异常堆栈跟踪中......)
它也可能是构建问题,但我对此表示怀疑,因为如果类没有构建,当您在eclipse中查看源文件时会看到错误标记,而Eclipse会在您尝试运行它时抱怨。如果源文件位于错误的目录中,Eclipse也会抱怨。
问题的第二部分是让您的应用程序找到"inData.txt"
文件。这应该很简单。当您尝试打开具有相对路径名的文件时,Java库将尝试解析相对于应用程序的“当前目录”的路径名。默认情况下,当您从Eclipse运行应用程序时,这将是您启动Eclipse时shell所在的目录; e.g。
$ cd /home/josh/somedir
$ eclipse &
...并且默认的当前目录应为“/ home / josh / somedir”。
如果默认当前目录不正确,您有许多选项,包括:
<强>后续强>
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
例外,我的诊断(如上所述)就是这样。 “当前目录”不是要解析的相对路径名所需的内容。请参阅上面的可能解决方案。