Nano Hash - криптовалюты, майнинг, программирование

UnsupportedClassVersionError, возникающая только в JBoss 5.1

Мое приложение содержит стороннюю банку (com.springsource.org.aspectj.weaver-1.6.8.RELEASE.jar), скомпилированную на Java6. Мне удалось использовать его на Tomcat 5.5, который запускает Java5, но когда я попытался развернуть то же приложение на JBoss 5.1, я получил сообщение об ошибке:

[org.jboss.detailed.classloader.ClassLoaderManager] (main) Неожиданная ошибка во время загрузки: testdata.SomeAnnotation java.lang.UnsupportedClassVersionError: неверный номер версии в файле .class

что я понял, что бывает не только со мной. как описано здесь.

мои вопросы:
1) почему можно использовать эту банку на веб-серверах, таких как tomcat, но она все еще беспокоит Jboss 5.1?
2) Почему загрузчик классов Jboss загружает реализацию Jweaver приложения, которая будет использоваться для загрузки его фреймворка, и не использует реализацию Jboss аспектJ. Возможно, мне следует настроить загрузку его класса на parent-first, и это решит эту проблему?


Ответы:


1

Java имеет обратную совместимость (jar-файл Java 5.0 может работать на Java 6), но не совместим напрямую (jar-файл Java 6 не может использоваться на Java 5.0)

Вам необходимо получить копию стороннего Jar, скомпилированного для Java 5.0, или обновить версию Java до версии 6 или более поздней.

07.02.2011
  • Итак, как я смог запустить те же классы Java6 при запуске моего приложения на Tomcat? они используют тот же Java JDK (1.5) - я думаю, это как-то связано с механизмом загрузки классов JBoss 08.02.2011
  • Когда вы компилируете jar в Java 6, вы можете указать цель Java 5, однако Java 5.0 JVM не будет загружать класс Java 6 независимо от того, как работает загрузчик классов. т.е. загрузчик классов ничего не может с этим поделать без перекодирования классов при их загрузке (я не знаю ни одного загрузчика классов, который это делает), и это было бы очень небезопасно. 08.02.2011

  • 2

    Иногда мы видели, что учащиеся HSG изменяют используемый jdk, перенастраивают свою среду с этой целью, и все же это исключение продолжает происходить. Это может вызвать значительную путаницу, особенно если они перешли с jdk1.6 на jdk1.5. Почти всегда виновником является то, что работает одна или несколько других версий jboss, и все входящие запросы обращаются к одной из них (с более новыми jar-файлами). Мы всегда проверяем, какие приложения работают, и убиваем / завершаем работу всех других версий jboss.

    30.09.2013
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

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

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..