Есть ли ограничение на размер java-файла?

Я разрабатываю проект, в котором мне необходимо создать код Java. Я проводил некоторое тестирование, когда столкнулся с проблемой ограничения основного метода в 65535 байт. Мой сгенерированный файл выглядел примерно так:

public class foo{
    public static void main(String[] args){
        //
        //7000 lines later
        //
    }
}

Я думал, что я умный, создавая файл таким образом:

public class foo{
    public static void bar(){
        //
        //7000 lines later
        //
    }
    public static void main(String[] args){
        bar();
    }
}

Но я обнаружил, что ограничение в 65535 байт распространяется на каждый метод.

Я хочу знать, решит ли мою проблему «буферизация» инструкций в несколько методов. Есть ли какие-либо ограничения на размер java-файла?


person user1581900    schedule 05.10.2012    source источник
comment
Есть ли какая-то конкретная причина для написания такого большого основного метода?   -  person Yogendra Singh    schedule 05.10.2012
comment
Если вы пишете весь код в основном методе, вы делаете это неправильно.   -  person nhahtdh    schedule 05.10.2012
comment
Иметь метод, содержащий 7000+ строк, было бы кошмаром для обслуживания. Это также показывает, что ваш код не является модульным по своей природе. Вы должны попытаться разбить свой код на небольшие, читаемые и логичные методы.   -  person Sujay    schedule 05.10.2012
comment
Взгляните на эту ссылку weblogs.java.net/blog/editor/archive/2010/01/19/   -  person RNJ    schedule 05.10.2012
comment
Есть ли какая-то конкретная причина для написания такого большого mainметода? В соответствии с концепциями OOAD (объектно-ориентированный анализ и проектирование) вы должны писать модульно. Один метод не должен содержать более нескольких (10) строк. 7000 в одном методе звучит неправильно.   -  person Yogendra Singh    schedule 05.10.2012
comment
Есть причина для такого большого файла. Делаем файлы excel. Действительно большие. С помощью Apache POI. После того, как java-файл скомпилирован и запущен, он удаляется, чтобы никогда больше не использоваться, поэтому никто не собирается поддерживать методы.   -  person user1581900    schedule 05.10.2012


Ответы (4)


Файл может быть любого размера, но длина метода не может превышать 65535 байт.

Единственный способ решить это -

  • используйте меньшие методы, такой большой метод нечитаем.
  • если он генерирует код, создайте несколько методов.
  • экстернализация информации в виде файла данных или базы данных.
person Peter Lawrey    schedule 05.10.2012

person Rytek    schedule 05.10.2012

Это известная ошибка/запрос функции (официальный инструмент отслеживания ошибок Java).

Тем не менее, вы должны разделить его на разные методы.

person juanignaciosl    schedule 05.10.2012

Я предполагаю, что ограничение существует, и вы его достигли - как указано здесь .

Кроме того, взгляните на это обсуждение.

person linski    schedule 05.10.2012