Не удается найти символ для другого файла класса

У меня была эта проблема несколько раз, когда я создал другой файл класса, и основной файл класса не мог его найти. Вот основной файл класса:

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 в качестве предложения для это. Это не работает. Я убедился, что скомпилировал 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. Заранее спасибо!


person liloka    schedule 10.09.2011    source источник


Ответы (3)


Убедитесь, что все файлы 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.

person palacsint    schedule 10.09.2011
comment
Благодарю вас! Это заставляет его работать, но по какой-то причине я получаю [Ljava.lang.String;@19821f, а не One, когда он печатается. Вы знаете, почему это так? :С Спасибо :) - person liloka; 10.09.2011
comment
Пожалуйста. Измените System.out.println(aryLines) на System.out.println(aryLines[i]). Подробнее о методе toString() в Array - person palacsint; 10.09.2011
comment
Спасибо .. Я не могу поверить, что я пропустил это в первую очередь! - person liloka; 10.09.2011

Вы должны скомпилировать все файлы Java, используемые вашим основным классом. Поскольку ReadFile используется FileData, вы также должны его скомпилировать.

Вы пробовали

javac Filedata.java ReadFile.java

or

javac *.java

?

person David Moreno García    schedule 10.09.2011
comment
Я убедился, что скомпилировал ReadFile и исправил там все ошибки. Ошибка компилятора, которую я получаю: Да, я это сделал :) Это было связано с местоположением, а не с ошибкой кодирования. Но спасибо! - person liloka; 10.09.2011
comment
@liloka Я имел в виду в то же время. Не отдельно. Во всяком случае, я полагаю, что вы сделали это. - person David Moreno García; 10.09.2011
comment
Ах, я в конце концов сделал это в любом случае. Даже не знал, что вы можете скомпилировать в то же время. Так что спасибо за это :) - person liloka; 10.09.2011
comment
Добро пожаловать @liloka. Это правильный способ компиляции java-программ. Удачи с вашим проектом ;) - person David Moreno García; 11.09.2011
comment
@DavidMorenoGarcía Знаете ли вы, почему javac требует, чтобы оба файла были указаны одновременно? Например, я пробовал javac file1.java и javac file2.java, выдавало ошибку, а javac file1.java file2.java работает. - person Celeritas; 03.07.2016

Должен быть конфликт с сгенерированными классами. Просто попробуйте удалить все созданные классы и заново собрать проект.

person seradd    schedule 05.05.2020