2015-07-16 21 views
8

'u kullanarak bir uberjar hazırlarken java'nın belirli bir sürümünü hedefleme Lein uberjar'ı kullanarak tek başına bir jar oluşturuyorum. Bu java 1.8 çalışan dizüstü bilgisayarımda gayet iyi çalışıyor. Ancak kolejimdeki bilgisayarlar 1.7.0_60 java çalıştırıyor.Leiningen

Benim project.clj içinde java 1.7 derlemek için :javac-options ["-target 1.7"] ekledim, ancak bu jar java 1.8 için derlendiğinde aynı hatayı döndürür. Hata: Unsupported major.minor version 52.

Belki de projemize :javac-options ["-target 1.7"] eklenmesi, derlenmiş olan sürüm üzerinde hiçbir etkisi olmayacaktır, emin değilim, lütfen yardım edin!

+1

Projeniz.clj neye benziyor? Java 8 ile derlenmiş olabilecek herhangi bir kütüphaneye güveniyor musunuz? –

+0

Sorun, kullanılan kitaplıklardan biriydi. Teşekkürler! –

cevap

0

:javac-options kullanıyorsunuz yanlış görünüyor. Lein belgesinde belirtildiği gibi bu seçeneği kullanmayı deneyin: :javac-options ["-target" "1.6" "-source" "1.6" "-Xlint:-options"].

3

Clojure, Java 1.6 ile geriye dönük olarak uyumlu olan Java sınıflarını şu anda derliyor; bu nedenle sorun olan Leiningen javac seçenekleri değil. Projelerimden birinde aynı sorunla karşılaştım. Sorun, kullandığınız kitaplıklardan birinin çok yeni bir Java sürümü için derlenmesidir. Bir überjar oluşturduğunuzda, Leiningen sınıfları bağımlılık kavanozlarınızdan kopyalar, böylece sınıf dosyası sürümlerini alırsınız.

Bu sorunu çözmek için Github'daki bağımlılık projesini engellemek ve Java 1.6 uyumlu sınıflar oluşturmak ve ardından Leningen projemi ana projeden ziyade çatala bağlı yapmak zorunda kaldım.

İlgili konular