2011. május 24., kedd

Figyelj a Java verziókra!

Úgy döntöttünk, hogy egy webalkalmazás fejlesztését IBM Rational Application Developer 8-ról Eclipse Helios alá helyezzük át. Mivel Eclipsehez nem találtunk Websphere 6.1-es szerver adaptert, az az ötlet merült fel hogy a build és telepítési folyamatot is Apache Ant segítségével oldjuk meg.

Elkészítettem a build fájlokat és próbaképpen feltelepítettem az ear-t a szerverre, azonban egy hiba üzenet jelent meg a böngészőben: Error 500, bad major version at offset=6.

A probléma oka, hogy az Eclipse-ben alapértelmezésként Java 6 volt beállítva, így a javac Ant taszk is ezzel fordította le az osztályokat. Mivel a Websphere 6.1 még az 1.5-ös Java verzióját használja, ebből adódóan a java 6-al lefordított osztályokat nem tudta értelmezni.

Az első ötletem, hogy használjuk az 1.5-ös Java-t az osztályok fordításához! Átállítottam az Eclipse-es runtime-ot (Eclipse/Window/Preferences/Java/Installed JREs) és a compiler compliance level-t (Eclipse/Window/Preferences/Java/Compiler) is az 1.5-ös Java-ra, a buildelés során azonban a következő hiba jelentkezett:

C:\IBM\rationalsdp\workspace\Project\gen\hu\tk\web\workflow\WorkflowManagerCanvas.java:22: cannot access com.vaadin.addon.chameleon.ChameleonTheme
bad class file: C:\IBM\rationalsdp\workspace\Project\WebContent\WEB-INF\lib\vaadin-chameleon-theme-1.0.1.jar (com/vaadin/addon/chameleon/ChameleonTheme.class)
class file has wrong version 50.0, should be 49.0

A probléma oka, hogy a vaadin-chameleon-theme-1.0.1.jar/ChameleonTheme.class fájl Java 6-os megfelelési szinttel lett lefordítva, így az 1.5-ös compiler nem tudta értelmezni. A hibaüzenet feloldásához az alábbi táblázat volt a segítségemre, ami a Java verziók megfeleltetéseit tartalmazza:

Major version Minor version Java platform
50 0 Java 6
49 0 Java 1.5
48 0 Java 1.4
47 0 Java 1.3
46 0 Java 1.2
45 3 Java 1.1

A melósabb megoldás az lett volna, hogy a vaadin-chameleon-theme-1.0.1.jar class fájljait újrafordítom 1.5-ös java fordítóval. Az egyszerűbb megoldás pedig, hogy az eredeti Java 6-os runtime-ot használva, Java 1.5-ös megfelelési szintű class fájlokat készítek. Ehhez a javac ant taszkhoz beállítottam az 1.5-ös Java megfelelési szintet a target="1.5" property-vel.

Nincsenek megjegyzések:

Megjegyzés küldése