2013-08-15 3 views
5

Für unser Java-Projekt verwenden wir mehrere JAR-Bibliotheken. Ein Teil des Quellcodes für die JAR-Bibliotheken ist verloren gegangen.Müssen wir JAR für das JDK-Upgrade kompilieren?

Wir werden bald die JRE-Version aktualisieren, wissen Sie, ob wir die JAR-Bibliotheken für die neue JRE-Version neu kompilieren müssen? Da wir die Quelle nicht haben, gibt es einen 100% genauen Decompiler?

+0

Hum, Java immer rückwärtskompatibilität, so dass Sie nicht neu kompilieren müssen. – jsedano

Antwort

6

Nein, alle JDK-Versionen sind abwärtskompatibel zu älteren Gläsern.

Sie müssen nicht neu kompilieren.

Die einzige Ausnahme ist, wenn die JAR einen JDBC-Treiber implementiert (nicht verwendet, aber implementiert).

+0

+1 Wenn Sie nur die Teilmenge der von Ihnen implementierten Methoden verwenden, spielt es möglicherweise keine Rolle, dass eine neuere JDBC-Schnittstelle über mehrere Methoden verfügt. z.B. Wenn add-Methoden verwendet werden, die nicht zu einer Schnittstelle gehören, ohne die Implementierung neu zu kompilieren, kann alles funktionieren. –

+0

Was passiert also, wenn die neue JRE-Version etwas abgeklärt hat ... das in den kommenden JRE-Versionen entfernt würde? Sind Sie sicher, dass Sie die JRE für die neue Version nicht neu kompilieren müssen? – firebird

+1

Nichts, das als veraltet gekennzeichnet ist, wurde * jemals * entfernt. Sie müssen sich unter keinen Umständen jemals neu kompilieren. – kittylyst

0

Java ist abwärtskompatibel, also können Sie die jars verwenden, die mit einem älteren jdk kompiliert wurden, der mit den neuesten jre-Versionen läuft. Wenn Sie jedoch einige jdk-spezifische Klassen verwenden, die sich in der neuesten Version geändert haben, kann nur ein Problem auftreten. Die Wahrscheinlichkeit dafür ist sehr gering, glaube ich.

1

Sie müssen ein Java 1.0 JAR auf einer Java 8 JVM nicht erneut kompilieren.

Was Sie haben könnten, ist ein Fehler in Ihrem Code, der nicht in Ihrer Version erscheint, aber in einer nie Version erscheint. z.B. Sie waren von einem undefinierten Verhalten oder einem Bug abhängig, der später behoben wurde. In diesem Fall müssten Sie Ihren Code reparieren, ein erneutes Kompilieren wäre nicht genug.

0

Es gibt einige interne Klassen, wie Suns Base64 Encoding/Decoding, die in neueren Versionen langsam verschwinden werden. Sie können gegen OpenJDK laufen, um zu prüfen, ob es Probleme mit Sonnenpaketen gibt.

Verwandte Themen