2015-12-02 22 views
5

PHP, python ve ruby ​​yazarken deneyimli bir acemi mühendisiyim. Clojure'da yazılmış bir projeye katkıda bulunmaya çalışıyorum. Projeye kitaplık eklemeye çalışıyorum ancak kitaplığı ekledikten ve lein uberjar çalıştırdıktan sonra bir hata alıyorum. Ne anlama geldiğini ve sorun giderme için bir yöntem önerip öneremeyeceğinizi bilmek isterim. Yardımınız için şimdiden teşekkür ederim! Ben elde etmek çalışıyorum neclojure bağımlılığı ekleme ve lein uberjar çalışmasına neden olma java.lang.IllegalAccessError

Projemdeki uap-clj library ekleyin ve bir JARDOSYASI içine projeyi derlemek.

Ne yazdım Kütüphaneyi bağımlılar listesinde ikinci ve sonuncu öğe olarak ekledim. Ben Lein koştu ne

:dependencies [[lots-of-dependencies] 
       [uap-clj "1.1.1"] ; user agent parser 
       [another-dependency]] 

According to the instructions on github, project.clj benim Değişiklikleri kaydettikten sonra, lein deps sonra lein clean && lein uberjar çalıştırın.

java.lang.IllegalAccessError: tried to access method clojure.lang.RT.classForNameNonLoading(Ljava/lang/String;)Ljava/lang/Class; from class clj_yaml.core$loading__5340__auto____29, compiling:(flexmaster.clj:1:1) 

ben yapmış olup olmadığını test etmek istedi çalıştı Başka ne:

Ne komutu uzun stacktrace önce aşağıdaki hatayı veriyor çalışan, güncellenmesi ve dosyayı kaydettikten sonra oldu kütüphaneyi eklerken bir hata. Sıfırdan yeni bir clojure projesi oluşturdum ve lein deps ve ardından lein uberjar kullanarak bir jütil oluşturdum. Ardından, uap-clj dosyasına yeni projemdeki bağımlılıkları ekledim, project.clj dosyasını kaydettim ve lein deps ve lein uberjar yeniden çalıştırdım. Başarılı bir jütil oluşturmayı başardım, bu yüzden kütüphaneyi doğru şekilde eklediğime inanıyorum.

Başka bir bağımlılık yaratma eyleminin jürili yaratmamı engellemesinin başka bir nedenini düşünemiyorum. Bir şey düşünebilirseniz, verdiğim bilgilere dayanarak kontrol etmeliyim, bu bana çok yardımcı olacaktır. Teşekkür ederim!

cevap

4

Başvurulan kitaplık Clojure 1.7.0'a bağlı gibi görünüyor, ancak açıkça sürüm 1.6.0 başvuruyorsunuz.

değiştirmeyi deneyin:

[org.clojure/clojure "1.6.0"] 

için: [uap-clj "1.0.1"]

: Alternatif

[org.clojure/clojure "1.7.0"] 

, şöyle Clojure 1.7.0 bağlı değildir kütüphanenin eski bir sürümünü, referans olabilir

+0

Teşekkürler! Bu kesinlikle işe yarıyor! Şimdi her zaman sürümü kontrol etmeyi biliyorum. –