2009-11-25 2 views
9

У меня есть проект Java, и он зависит от asm jar. Странно, я даже не знаю, почему мой проект каким-то образом зависит от этой библиотеки (может быть внесен maven в качестве транзитивной зависимости)?ASM jar - Почему мой проект java имеет зависимость от этого?

Может ли кто-нибудь помочь мне знать Почему кому-то нужен asm jar?

Заранее благодарен!

EDIT: Можете ли вы также указать, для каких целей/прецедентов может понадобиться asm jar?

+1

Это ASM: asm.ow2.org - может использоваться для файлов классов приборов для измерения качества кода –

+0

Андреас, если я прав, мы говорим, что asm помогает нам делать некоторые манипуляции в байт-коде уже загруженного байт-кода в JVM? – peakit

ответ

12

ASM является основой манипуляции байткода (см this page для хорошего введения) и используются многими вещами, выполняющих ... байткод манипуляции: рамки с использованием прокси поколения и отражения (Spring, Hibernate и т.д.), насмешливое рамки (EasyMock, JMock и т. Д.), Инструменты анализа кода (PMD, Findbugs и т. Д.). Фактически, проект ASM ведет список users, организованный по категориям, проверьте его.

Как отметил Винсент, если вы транзитивны в зависимости от ASM, то dependency:tree цели или dependency report (смотрите ссылки PMD и FindBugs выше примеры) может помочь проанализировать ситуацию и выяснить, откуда его откуда. Но это не будет учитывать зависимости плагинов maven, которые вы используете, только зависимости вашего проекта.

1

Какие еще зависимости у вашего проекта? Я подозреваю, что одна из банок, которые вы решили использовать (например, Spring или Hibernate) сам требует asm.jar?

+0

Брайан, я сильно использую весну в моем проекте. Но почему весна нужна asm? Просто любопытно ... – peakit

+0

Я не знаю, признаюсь. Он может выполнять инъекцию байт-кода для аспектов, но я бы об этом позаботился. –

+0

неважно! все еще спасибо за указатели. – peakit

3

Maven-2 требует, чтобы asm.jar скомпилировал и запустил приложение.

Here для получения дополнительной информации.

EDIT:

Из множества возможных использований анализа программы, создания и трансформационные метод мации, много инструментов для анализа, генерации и преобразования программ были реализованы, для многих языков, Java включен , ASM является одним из этих инструментов для языка Java, предназначенных для выполнения, но также и для генерации и преобразования в автономном режиме. Поэтому библиотека ASM1 была разработана для работы над скомпилированными Java-классами. Он также был спроектирован так же быстро и как маленький , насколько это возможно. Быть настолько быстрым, насколько это возможно важно, чтобы не замедлять работу приложений, использующих ASM во время выполнения, для динамического класса - ation или transform. И быть как можно меньше важно для того, чтобы использоваться в средах с ограниченной памятью и избегать раздувания размера небольших приложений или библиотек с использованием ASM. ASM - это не единственный инструмент для генерации и преобразования скомпилированных классов Java , но он является одним из самых последних и эффективных. Его можно загрузить от http://asm.objectweb.org. Его основные преимущества заключаются в следующем: 1) Он имеет простой, хорошо спроектированный и модульный API, который прост в использовании. 2) Он хорошо документирован и имеет связанный с ним плагин Eclipse. 3) Он обеспечивает поддержку последней версии Java, Java 6. 4) Он маленький, быстрый и очень надежный. 5) Его большое сообщество пользователей может обеспечить поддержку для новых пользователей. 6) Его лицензия с открытым исходным кодом позволяет вам использовать ее практически любым способом.

this pdf файл. У меня создается впечатление, что наряду с Java EE 6 также появился встроенный инструмент ASM для генерации и преобразования классов. PDF дает более подробную информацию о ASM.

Надеюсь, это поможет.

+0

@aforloney, thats зависимость для плагина maven-pmd .. я не использую PMD..почему нам нужно asm тогда? – peakit

+0

Я нашел pdf в Интернете, я добавил его на свой пост с рекламой, надеюсь, это поможет. –

+0

Ahh .. согласно @Andreas_D asm может использоваться для инструментария файлов классов. @aforloney, может быть, поэтому нужен плагин PMD для maven .. wat say? – peakit

1

Для Maven можно использовать dependency plugin, чтобы узнать, какая библиотека имеет asm как зависимость.

+0

спасибо Винсент за предложение! – peakit