Ошибка: не удается найти символ - ошибка компиляции Java
Я уже давно смотрю на это, и я уверен, что решение прямо передо мной, но я просто слеп к этому. Кто-то хочет указать, почему мой int дает мне ошибку?
Класс CacheDownloader:
public static void main(String[] args) {
String strFilePath = "./version.txt";
try
{
FileInputStream fin = new FileInputStream(strFilePath);
DataInputStream din = new DataInputStream(fin);
int i = din.readInt();
System.out.println("int : " + i);
din.close();
}
catch(FileNotFoundException fe)
{
System.out.println("FileNotFoundException : " + fe);
}
catch(IOException ioe)
{
System.out.println("IOException : " + ioe);
}
}
private final int VERSION = i;
Ошибка:
CacheDownloader.java:54: error: cannot find symbol
private final int VERSION = i;
^
symbol: variable i
location: class CacheDownloader
2 ответа
Решение
Я объявлен в main, private final int VERSION находится за пределами main. Переместите его внутрь main или объявите i глобальным.
static int i=0;
public static void main(String[] args) {
String strFilePath = "./version.txt";
try
{
FileInputStream fin = new FileInputStream(strFilePath);
DataInputStream din = new DataInputStream(fin);
i = din.readInt();
System.out.println("int : " + i);
din.close();
}
catch(FileNotFoundException fe)
{
System.out.println("FileNotFoundException : " + fe);
}
catch(IOException ioe)
{
System.out.println("IOException : " + ioe);
}
}
private final int VERSION = i;
Вы должны объявить свой int i
перед try-catch
блок. Кроме того, вы должны объявить свою константу внутри вашего main
метод:
public static void main(String[] args) {
String strFilePath = "./version.txt";
int i;
try
{
FileInputStream fin = new FileInputStream(strFilePath);
DataInputStream din = new DataInputStream(fin);
i = din.readInt();
System.out.println("int : " + i);
din.close();
}
catch(FileNotFoundException fe)
{
System.out.println("FileNotFoundException : " + fe);
}
catch(IOException ioe)
{
System.out.println("IOException : " + ioe);
}
final int VERSION = i;
}