Неподдерживаемая версия major.minor 49.0 - PullRequest
9 голосов
/ 06 октября 2009

При каждом входе в приложение я получаю следующее исключение ...

javax.servlet.ServletException: ком / ВС / орг / апач / Xalan / внутренний / XSLTC / Trax / TransformerFactoryImpl (Неподдерживаемая версия major.minor 49.0)

Что это значит и как я могу решить проблему?

Ответы [ 6 ]

14 голосов
/ 06 октября 2009

У вас есть несоответствие между вашей JVM, которую вы используете для запуска .class, и версией Java, используемой для компиляции .class. JVM, на которой он запущен, является более ранней версией JVM, использованной для компиляции этого класса.

Как указано здесь , у вас есть класс версии 1.5, который вы пытаетесь запустить на более ранней JVM.

РЕДАКТИРОВАТЬ: WAS 5.1 использует JDK 1.4, это будет выглядеть .

7 голосов
/ 06 октября 2009

Ваш код был скомпилирован с Java 1.5, и вы пытаетесь запустить его с Java 1.4 (или ниже)

Решение

a) Run it with Java1.5 ( perhaps using WAS 6+ ) 
b) Recompile it with Java 1.4

или

c) Recompile it with Java.15 but specifying the -target flag ( javac -target 1.4 .... ) 

Дело в том, что вы пытаетесь запустить 1,5 байт-кода в 1,4 ВМ

2 голосов
/ 06 октября 2009

У вас есть код, скомпилированный с функциями Java 5, который вы пытаетесь запустить на JVM версии 1.4 или более ранней. Проверьте, что ваша переменная JAVA_HOME указывает на JDK 1,5 или более поздней версии.

Обновление: в своем комментарии вы говорите, что используете WAS 5.1. WAS 5.1 не поддерживает Java 5, из памяти вы должны быть на WAS 6.1, чтобы использовать Java 5 (ищите справку ...)

1 голос
/ 27 марта 2013

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

1 голос
/ 06 октября 2009

Если вы создаете свои классы с более высокой версией JDK для минорной версии JAVA, используйте ключи -source и -target компилятора javac. Некоторым клиентам нужна дополнительная версия Java, например, 1.4, пока вы разрабатываете с 1.6. -source и -target являются средством для этого сценария. Вы можете прочитать очень хорошую статью о байт-коде и проблемах с версионированием исходного кода от Алекса Бакли.

Но поскольку TransformerFactoryImpl является внутренним классом Sun, проверьте свой JAVA_HOME для своего контейнера, но это зависит от контейнера.

0 голосов
/ 23 июля 2012

Используйте sudo update-alternatives --config java и установите версию, которую вы можете использовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...