Java Eclipse错误'找不到源。'

时间:2012-01-29 02:48:13

标签: java

我是编程世界的新手,我正在尝试做一个简单的程序,我从文件中读取并输出一个数字。我相信我在代码中设置了所有内容,我是否需要对.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)

1 个答案:

答案 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”。

如果默认当前目录不正确,您有许多选项,包括:

  • 在启动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例外,我的诊断(如上所述)就是这样。 “当前目录”不是要解析的相对路径名所需的内容。请参阅上面的可能解决方案。