Sono un ingegnere alle prime armi con esperienza nella scrittura di PHP, python e ruby. Sto cercando di contribuire a un progetto scritto in clojure. Sto cercando di aggiungere una libreria al progetto, ma dopo aver aggiunto la libreria ed eseguito lein uberjar
, sto ricevendo un errore. Vorrei sapere cosa significa e se è possibile consigliare un metodo per risolverlo. Grazie in anticipo per il vostro aiuto!L'aggiunta della dipendenza da clojure e l'esecuzione di lein uberjar causa java.lang.IllegalAccessError
Quello che sto cercando di realizzare Includere il uap-clj library nel mio progetto e compilare il progetto in un jarfile.
Cosa ho scritto Ho aggiunto la libreria come penultimo elemento nell'elenco delle dipendenze.
:dependencies [[lots-of-dependencies]
[uap-clj "1.1.1"] ; user agent parser
[another-dependency]]
Quello che mi sono imbattuto in Lein According to the instructions on github, dopo aver salvato le mie modifiche al project.clj, corro lein deps
poi lein clean && lein uberjar
.
Che cosa è successo Dopo aver aggiornato e salvato il file, eseguendo il comando dà il seguente errore prima di un lungo stacktrace:
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)
Che altro ho cercato ho voluto verificare se avevo fatto un errore aggiungendo la libreria. Ho creato un nuovo progetto clojure da zero e ho creato un file jar utilizzando lein deps
e poi lein uberjar
. Successivamente, ho aggiunto uap-clj alle: dipendenze nel mio nuovo progetto, salvato project.clj ed eseguito e lein uberjar
di nuovo. Sono riuscito a creare un file jar, quindi credo di aggiungere la libreria correttamente.
Non riesco a pensare ad un altro motivo per cui l'atto di includere un'altra dipendenza mi impedisca di creare il file jar. Se riesci a pensare a qualcosa che dovrei controllare in base alle informazioni che ho fornito, mi sarebbe di grande aiuto. Grazie!
Grazie! Questo funziona assolutamente! Ora so di controllare sempre la versione. –