【问题标题】:Cannot Find Symbol for another class file找不到另一个类文件的符号
【发布时间】:2011-11-14 10:46:30
【问题描述】:

我遇到过几次这个问题,我创建了另一个类文件,但主类文件找不到它。 这是主要的类文件:

package textfiles;

import java.io.IOException;
 public class FileData
 {

public static void main(String[] args)
{
    String file_name = "Lines.txt";

    try {
        ReadFile file = new ReadFile(file_name);
        String[] aryLines = file.OpenFile();

        for(int i =0; i<aryLines.length; i++)
        {
            System.out.println(aryLines);
        }
    }

    catch(IOException e)
    {   
        System.out.println(e.getMessage());
    }
}
  }

这是找不到的类文件:

package textfiles;

import java.io.IOException;
import java.io.FileReader;
import java.io.BufferedReader;

 public class ReadFile
 {
private String path;
int numberOfLines=0;

public ReadFile(String file_path)
{
    path = file_path;
}

public String[] OpenFile() throws IOException
{
    FileReader fr = new FileReader(path);
    BufferedReader br = new BufferedReader(fr);

    int numberOfLines = readLines();
    String[] textData = new String[numberOfLines];

    for(int i=0; i<numberOfLines; i++)
    {
        textData[i] = br.readLine();
    }

    br.close();
    return textData;
}

int readLines() throws IOException
{
    FileReader file_to_read = new FileReader(path);
    BufferedReader bf = new BufferedReader(file_to_read);

    String aLine;

    while((aLine = bf.readLine()) != null)
    {
        numberOfLines++;
    }

    bf.close();
    return numberOfLines;
}
  }

我尝试运行 javac textfiles\ReadFile.java 和 javac textfiles\FileData.java 作为this 的建议。那是行不通的。我已经确定我已经编译了 ReadFile 并修复了那里的所有错误。 我得到的编译器错误是:

C:\Users\Liloka\Source>javac FileData.java
FileData.java:13: cannot find symbol
symbol  : class ReadFile
location: class textfiles.FileData
                    ReadFile file = new ReadFile(file_name);
                    ^
  FileData.java:13: cannot find symbol
  symbol  : class ReadFile
  location: class textfiles.FileData
                    ReadFile file = new ReadFile(file_name);
                                        ^
  2 errors

我正在使用 notepad++ 和 .cmd,所以它不会是 IDE 错误。 提前致谢!

【问题讨论】:

    标签: file class find symbols


    【解决方案1】:

    确保java文件都在textfiles目录下:

    textfiles/FileData.java
    textfiles/ReadFile.java
    

    然后运行:

    javac textfiles/FileData.java textfiles/ReadFile.java 
    java textfiles.FileData
    

    您的代码无需任何修改即可运行。我认为您是从错误的目录编译:

    C:\Users\Liloka\Source>javac FileData.java

    FileData.java 移动到textfiles 目录。

    【讨论】:

    • 谢谢!这确实使它运行,但由于某种原因,我在打印时得到“[Ljava.lang.String;@19821f”而不是“One”。你知道这是为什么吗? :S 谢谢:)
    • 不客气。将 System.out.println(aryLines) 更改为 System.out.println(aryLines[i])More info about Array's toString()
    • 谢谢你.. 我不敢相信我一开始就错过了!
    【解决方案2】:

    你必须编译你的主类使用的所有java文件。由于 FileData 使用 ReadFile,因此您也必须对其进行编译。

    你试过了吗

    javac Filedata.java ReadFile.java
    

    javac *.java
    

    ?

    【讨论】:

    • " 我确定我已经编译了 ReadFile 并修复了那里的所有错误。我得到的编译器错误是:" 是的,我做到了 :) 这是由于位置而不是编码错误。不过谢谢!
    • @liloka 我的意思是同时。不分开。无论如何,我想你做到了。
    • 啊,我最终还是这样做了。甚至不知道你可以同时编译。所以谢谢你:)
    • 不客气@liloka。这是编译java程序的正确方法。祝你的项目好运;)
    • @DavidMorenoGarcía 你知道为什么 javac 需要同时指定两个文件吗?例如,我尝试了 javac file1.javajavac file2.java 并给出了错误,但 javac file1.java file2.java 有效。
    【解决方案3】:

    与生成的类一定有冲突。 只需尝试删除所有已生成的类并重新构建项目即可。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-06-11
      • 2016-01-08
      • 1970-01-01
      • 1970-01-01
      • 2013-11-14
      • 1970-01-01
      • 2022-06-10
      • 2020-08-11
      相关资源
      最近更新 更多