2010-12-18 7 views
0

In der ActiveMQ docs wird erwähnt:activemq Java-Version

HINWEIS: ActiveMQ kann auf einem Java 1.4.x System ausgeführt werden, jedoch Java 1.5 ist erforderlich, um zu kompilieren/build ActiveMQ ..

Wie ist das möglich? Wenn es mit 1.5 kompiliert wird, und wenn es in 1.4 ausgeführt wird, sollten wir nicht eine Ausnahme 'Nicht unterstützte Major.Minor-Version' erhalten?

Antwort

0

Glauben Sie nicht, dass es nicht von ActiveMQ selbst verursacht wurde, sondern von den Unterschieden zwischen zwei Java-Versionen (1.4 und 1.5) und der Art und Weise, wie der Java1.5-Quellcode kompiliert wurde. Alle Java5-Neuheiten werden in Java 1.4-Bytecode übersetzt (z. B. lesen Sie über Typ-Lösch-Technik, die verwendet wird, um Java 1.5 Generika zu erreichen).

Ich bin mir nicht 100% sicher darüber; Es war mein erster Gedanke, als ich deine Frage gelesen habe.

+0

Können Sie bitte erklären, ein bisschen mehr sein? Wenn ich versuche, eine Hauptklasse mit 1.5 zu kompilieren und mit 1.4 zu laufen, wird ein Fehler ausgegeben. – Victor

+0

@Kaushik: Nun, du hast nicht erwähnt, dass du Fehler bekommen hast. Könnten Sie es hier einfügen? – Lukasz

0

Es gibt Techniken, um die .class-Dateien, die Java Bytecode sind, in eine andere, frühere JVM zu konvertieren. Ich konvertiere zum Beispiel die neue for-Schleife (für (X x: xs)) in diejenige mit einem Iterator. Verweise auf neue JDK-Klassen funktionieren möglicherweise nicht, wenn dieser Konvertierungsprozess sie nicht in einer JDK-kompatiblen Zielversion hinzufügt.

Ich habe das als Maven Builder gesehen. Bei dieser Verwendung konnte ich Portlets in Java 1.5 für einen alten WebSphere-Server, der 1.4 war, programmieren. Maven hat alles für mich getan, um die Kriegsakte zu bauen. Die Ausgabe war ein Portlet-1.0.0.java4.war und ein Portlet-1.0.0.java5.war.

See Retrotranslator: http://retrotranslator.sourceforge.net/