Ich erstelle ein Standalone-Glas mit Lein Uberjar. Das funktioniert ganz gut auf meinem Laptop, auf dem Java 1.8 läuft. Jedoch laufen die Computer an meiner Universität Java 1.7.0_60.
Innerhalb meiner project.clj habe ich :javac-options ["-target 1.7"]
hinzugefügt, um zu java 1.7 zu kompilieren, aber das gibt den gleichen Fehler zurück wie wenn dieses jar für java 1.8 kompiliert wird. Der Fehler ist: Unsupported major.minor version 52
.
Vielleicht hat der Zusatz von :javac-options ["-target 1.7"]
zu meinem project.clj keinen Einfluss auf die Version, die kompiliert wurde, ich bin nicht sicher, bitte helfe!
Clojure kompiliert derzeit zu Java-Klassen, die abwärtskompatibel zu Java 1.6 sind. Daher sind es nicht die Leiningen javac
-Optionen, die das Problem darstellen. Bei einem meiner Projekte stieß ich auf dasselbe Problem. Das Problem ist, dass eine der Bibliotheken, die Sie verwenden, für eine neue Java-Version kompiliert wird. Wenn du ein Überjar erstellst, kopiert Leiningen einfach die Klassen aus deinen Abhängigkeitsgläsern in sie, so dass du die Klassenversionen erhältst, die sie haben.
Um dieses Problem in meinem Fall zu lösen, musste ich das Dependency-Projekt auf Github forkieren und Java-kompatible Klassen erstellen und dann mein Leningen-Projekt von der Verzweigung und nicht vom Hauptprojekt abhängig machen.
Es sieht so aus, als ob Sie :javac-options
falsch verwenden. Versuchen Sie, diese Option zu verwenden, wie in Lein-Dokument erwähnt: :javac-options ["-target" "1.6" "-source" "1.6" "-Xlint:-options"]
.