Вопрос-ответ

"Code too large" compilation error in Java

Ошибка компиляции "Слишком большого кода" в Java

Существует ли какой-либо максимальный размер кода в Java? Я написал функцию с более чем 10 000 строк. Фактически, каждая строка присваивает значение переменной массива.

arts_bag[10792]="newyorkartworld";
arts_bag[10793]="leningradschool";
arts_bag[10794]="mailart";
arts_bag[10795]="artspan";
arts_bag[10796]="watercolor";
arts_bag[10797]="sculptures";
arts_bag[10798]="stonesculpture";

И во время компиляции я получаю эту ошибку: код слишком большой

Как мне это преодолеть?

Переведено автоматически
Ответ 1

Объем байт-кода одного метода в классе Java может составлять не более 64 КБ.


Но вы должны это исправить!

Используйте .properties файл для хранения этих данных и загружайте их через java.util.Properties

Вы можете сделать это, поместив .properties файл в свой путь к классу и используя:

Properties properties = new Properties();
InputStream inputStream = getClass().getResourceAsStream("yourfile.properties");
properties.load(inputStream);
Ответ 2

Для метода существует ограничение на размер кода в 64 КБ байт

Сказав это, я должен согласиться с Ричардом; зачем вам нужен метод такого размера? Учитывая пример в OP, файла свойств должно быть достаточно ... или даже базы данных, если требуется.

Ответ 3

Согласно Спецификация виртуальной машины Java, код метода не должен быть больше 65536 байт:


Значение code_length элемента дает количество байтов в code массиве для этого метода.


Значение code_length должно быть больше нуля (поскольку массив кода не должен быть пустым) и меньше 65536.


code_length определяет размер code[] атрибута, который содержит фактический байт-код метода:


В code массиве указаны фактические байты кода виртуальной машины Java, которые реализуют метод.


Ответ 4

Это немного похоже на безумие. Разве вы не можете инициализировать массив, считывая значения из текстового файла или какого-либо другого источника данных?

java arrays