【问题标题】:Cannot find a symbol error in java when compiling from command prompt从命令提示符编译时在 java 中找不到符号错误
【发布时间】:2017-05-01 08:12:20
【问题描述】:

您好,我在一个名为 Utility 的目录下创建了两个 Java 文件,如下所示:

  1. 文件名.java
public class FileName {
  private String name;
  public FileName (String name) {
      //some code
  }
  String getName() {
      return name;
  }
}
  1. FileNameReader.java
public class FileNameReader {

  public static void main(String[] args) throws IOException {
      FileName obj = new FileName("testfile.txt");
  }

}

现在,当我编译 throw 命令提示符时,编译器给我一个错误,提示不能在 FileName obj = new FileName(); 处归档符号;这一行

【问题讨论】:

  • 事后不要修复你的代码,因为它完全改变了问题的上下文。现在,除了缺少 import 语句之外,应该不会再出现任何编译器错误了。
  • @QBrute,我已经删除了我的答案,因为它不再有意义

标签: java java-8


【解决方案1】:

这里:

public SearchFile(String name) {

这将是一个名为 SearchFile 的类的构造函数。

但是你的类被命名为 FileName;因此您必须将所有内容(类和文件名)重命名为 SearchFile;或者您将 ctor 更改为 public FileName(String name)

除此之外:only 类有一个带有字符串参数的构造函数。但是您的其他课程适用于new FileName(),但没有提供论据。那也行不通。

但真正的答案是:这种“微妙”的细节很重要。您必须密切注意您写下的每一行代码。并且:在您“完成”您认为应该编译的内容后立即运行编译器。您不会用 10、20、50 行代码创建 2、3 个文件,然后发现每个文件中都有一堆问题!

【讨论】:

  • 可能你有很多不同的错误。逐个文件,从不依赖他人的开始。
【解决方案2】:

你必须在FileNameReader 课程中遇到问题:

  1. 您需要通过添加来导入IOException

    import java.io.IOException;
    
  2. 您已经为FileName 创建了一个带有String 参数的显式构造函数,因此隐式默认构造函数不再可见。您需要在创建新实例时提供 String

    FileName obj = new FileName("someString");
    

这个 FileNameReader.java 编译:

import java.io.IOException;

public class FileNameReader {

  public static void main(String[] args) throws IOException {
      FileName obj = new FileName("someString");
  }

}

【讨论】:

    猜你喜欢
    • 2023-03-09
    • 2014-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-31
    • 2013-12-06
    相关资源
    最近更新 更多