【问题标题】:javac error: Scanner: FileNotFoundExceptionjavac错误:扫描仪:FileNotFoundException
【发布时间】:2020-02-26 19:38:31
【问题描述】:

我现在正在编写一个 java 类并想读取一个 txt 文件,如下所示:

public class Myclass {
...
public static void main(String[] args) {
    try{
        File file = new File(args[0]);
        Scanner scanner = new Scanner(file);
        int [] array = new int [1000];
        int i = 0;
        while(scanner.hasNextInt())array[i++] = scanner.nextInt();}
    catch (FileNotFoundException exp) {
        exp.printStackTrace();}
}
...
}

例如,像java Myclass input.txt 一样使用它。但是,当我在 Linux 中使用 javac 编译它时,会抛出错误:

error: cannot find symbol
        catch (FileNotFoundException exp) {
               ^
symbol:   class FileNotFoundException
location: class Myclass

这很奇怪,因为输入文件的名称甚至还没有传入。我试过File file = new File('input.txt');,它也会抛出这个错误,所以我不知道出了什么问题(System.out.println(new File('input.txt').getAbsolutePath());将打印出正确的和存在路径)。

【问题讨论】:

  • 尝试将其从 FileNotFoundException 更改为通用 Exception 看看是否仍然发生
  • 还是,编译不通过。

标签: java java.util.scanner javac java-io


【解决方案1】:

我认为你必须使用以下命令编译你的类

javac com/Trail.java
javac <package-name1>/<package-name2>/<classname.java>

然后运行以下命令

java com.Trail test.txt

您必须确保 test.txt 放置,然后它将对您有用,让我向您推荐以下问题的答案,它对运行您的代码 herehere 有很大帮助 你应该把你的文件放在哪里

注意:

  • 尝试声明public static void main(String args[]) throws FileNotFoundException

  • 请您必须在要编译的文件的文件夹内

【讨论】:

  • 感谢您提供新方向:D。你能告诉我com/Trail.java是什么,javac &lt;package-name1&gt;/&lt;package-name2&gt;/&lt;classname.java&gt;代表哪种格式(比如javac java.util.Arrays java.util.Random classname.java是错误的)。我尝试添加第一个 href 中提到的 -cp(classpath) 标志,但编译仍然失败。第二个 href 似乎丢失了。
  • ``` com/Trail.java ``` 是你的文件的包名,有2个正确的语法来写它,请你阅读下面的link,会为你解释一切
  • 请您必须在要编译的文件的文件夹内
  • 谢谢。我声明public static void main(String args[]) throws FileNotFoundException,现在它工作了,终于XD
【解决方案2】:

您需要在课程开始时添加正确的导入:

import java.io.FileNotFoundException;

public class Myclass {...

【讨论】:

  • 是的,我刚刚添加了import java.io.FileNotFoundException;,但仍然失败。
【解决方案3】:

您似乎没有导入类 FileNotFoundException

在文件顶部添加import java.io.FileNotFoundException 应该可以解决问题。

【讨论】:

  • 我尝试添加import java.io.FileNotFoundException,现在Scanner scanner = new Scanner("array.txt"); int [] array = new int [1000]; int i = 0; while(scanner.hasNextInt())array[i++] = scanner.nextInt();可以通过编译但仍然无法读取文件(数组全为0)。而对于File file = new File(args[0]); Scanner scanner = new Scanner(file);,它在javac 编译中失败,unreported exception FileNotFoundException;
【解决方案4】:

假设所有导入都正常,下一个最可能的原因是 txt 文件不存在。您必须将 txt 文件与“src”、“dist”和“build”等文件夹放在同一个文件夹中。

【讨论】:

  • 或者试试绝对路径看看是不是这个问题
  • 我试过绝对路径,但还是被抓到了。至于相对路径,我的 .java 文件位于文件夹 A 中,然后我运行 cd A javac my.java。而且我认为路径并不重要,因为我尝试了File file = new File(args[0]); Scanner scanner = new Scanner(file);,但在javac 编译中失败了。
  • “我不认为路径很重要” - 你是说错误发生在编译时,而不是运行时?如果是这样,那将是您缺少导入,或者您的链接器找不到库。
  • 没错。这是我的全部导入库:import java.util.Arrays; import java.util.Random; import java.util.concurrent.*; import java.util.Scanner; import java.io.File; import java.io.FileNotFoundException;
【解决方案5】:

我想通了!

像这样声明main

public static void main(String args[]) throws FileNotFoundException{
...

【讨论】:

    【解决方案6】:

    尝试把你要读取的文件的位置,像这样:

    File file = new File("C:\\text.txt");
    

    完整示例:

    public static void main(String[] args) 
      { 
        File file = new File("C:\\text.txt"); 
        Scanner sc = new Scanner(file); 
    
        while (sc.hasNextLine()) 
          System.out.println(sc.nextLine()); 
      } 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-01
      • 2015-10-02
      • 2018-12-17
      • 1970-01-01
      • 2018-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多