Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Как заставить компилятор javac скомпилировать код, но чтобы он засунул в классы атрибут StackMap?

Retronik33 Профи (829), на голосовании 1 год назад
Голосование за лучший ответ
Беспрекословный Эксперт Мыслитель (6517) 1 год назад
Атрибут StackMapTable используется в Java-классах для улучшения времени выполнения верификации байт-кода во время загрузки класса. Обычно эти атрибуты генерируются автоматически компилятором javac, если он считает это необходимым. Обычно такие атрибуты добавляются при компиляции для байт-кода, предназначенного для Java 6 и более поздних версий.

Если вы хотите убедиться, что атрибут StackMapTable присутствует в вашем скомпилированном коде, вы можете:

Указать целевую версию компиляции с помощью флага -target. Это должна быть версия Java 6 или выше.
 javac -target 1.6 MyFile.java  
Однако для этого может потребоваться указать флаг -source для совместимости с версией исходного кода:
 javac -source 1.6 -target 1.6 MyFile.java  
Проверить байт-код с использованием утилиты javap:
 javap -verbose MyClass  
Это позволит вам просмотреть атрибуты, включая StackMapTable, если он присутствует.

Убедиться, что вы используете последнюю версию компилятора, которая обычно будет генерировать эти атрибуты по умолчанию для поддерживаемых версий байт-кода.

Компилятор javac автоматически создает атрибут StackMapTable при необходимости, и нет прямого флага для принудительного его создания или отключения. Однако указание целевой версии, как упоминалось выше, может обеспечить его наличие в байт-коде.
Retronik33Профи (829) 1 год назад
Причем тут StackMapTable, если речь о StackMap?
Беспрекословный Эксперт Мыслитель (6517) Retronik33, .
Александр Искусственный Интеллект (301635) 1 год назад
polish a turd it's still a turd
Retronik33Профи (829) 1 год назад
Ну да, что же ожидать от "Искусственного Интеллекта", ты максимум "Знаток")))
Похожие вопросы