2009-10-06 11 views
9

otrzymuję następujący wyjątek, kiedy mogę się zalogować do mojej aplikacji ...nieobsługiwana wersja MAJOR.MINOR 49,0

javax.servlet.ServletException: com/sun/org/apache/Xalan/wewnętrzny/xsltc/trax/TransformerFactoryImpl (nieobsługiwany MAJOR.MINOR wersja 49,0)

Co to oznacza i jak można rozwiązać ten problem?

Odpowiedz

14

Masz niezgodność między maszyną JVM, której używasz do uruchomienia klasy .class, a wersją Java używaną do kompilowania klasy .class. Maszyna JVM, która go obsługuje, jest wcześniejszą wersją JVM używanej do kompilacji tej klasy.

Jak szczegółowo here, masz wersję 1.5, którą próbujesz uruchomić na wcześniejszej maszynie JVM.

EDYCJA: WAS 5.1 używa JDK 1.4, it would appear.

+0

Używam WAS 5.1, a JRE zainstalowany w moim systemie lokalnym to JRE 1.5.0_06 – Gourav

+0

każde możliwe rozwiązanie .. ?? – Gourav

+0

@Gourav: Co mówi "java -version"? – Powerlord

2

Masz kod skompilowany z funkcjami Java 5, które próbujesz uruchomić na maszynie wirtualnej JVM 1.4 lub wcześniejszej. Sprawdź, czy zmienna JAVA_HOME wskazuje na JDK w wersji 1.5 lub nowszej.

Aktualizacja: W swoim komentarzu mówisz, że używasz WAS 5.1. WAS 5.1 nie obsługuje Java 5, z pamięci musisz być w WAS 6.1, aby używać Java 5 (szukając odniesienia ...)

1

Jeśli zbudujesz swoje klasy z wyższą wersją JDK dla mniejszego wersja JAVA używa przełączników -source i -target kompilatora javac. Niektórzy klienci potrzebują mniejszej wersji Javy, np. 1.4 podczas pracy z wersją 1.6. -source i -target są lekarstwem na to szenario. Możesz przeczytać bardzo dobry paper o kodzie bajtów a problemach z wersją kodu źródłowego Alexa Buckleya.

Ale ponieważ TransformerFactoryImpl jest klasą wewnętrzną Sun, sprawdź swój JAVA_HOME dla swojego kontenera, ut jest to specyficzne dla kontenera.

+0

Niestety, javac odmówi pracy z zasobem -source o wyższej wersji niż -target, a w żadnym wypadku nie pomógłby w użyciu części biblioteki API, która nie jest jeszcze dostępna w starszym środowisku JRE. –

7

Twój kod został skompilowany z Java 1.5 i próbujesz uruchomić go z Java 1.4 (lub niższej)

Rozwiązaniem jest

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

lub

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

Chodzi o to, próbujesz uruchomić 1.5 bajtodu w 1.4 vm

0

Użyj sudo update-alternatives --config java i ustaw wersję, której możesz użyć.

1

Dzieje się tak, gdy skompilowałeś swój kod na komputerze, który używa innej wersji JDK do wersji, w której uruchamiasz kod. Upewnij się, że używasz tej samej wersji JDK w tych różnych polach.

Powiązane problemy