2017-09-30 1 views
4

최근에 저는 - 오늘날처럼 - clojure로 프로그래밍하는 것에 관심이 생겼습니다. 이제 java의 jdk 최신 버전을 설치하고 leiningen 스크립트를 다운로드 한 후, 후자에 대한 설치 지침, 특히 http:/www.lispcast.com/clojure-ubuntu에있는 설치 지침을 따랐습니다.java 클래스가 없으므로 leiningen을 실행할 수 없습니다.

이제 lein version을 실행하고 관련 jar 파일을 다운로드 한 후 클래스를 찾을 수 없다는 오류와 함께 프로그램이 종료됩니다. 다음과 같이 문제의 오류가 읽 스레드에서

예외 "주"java.lang.ExceptionInInitializerError
을 java.base에서/java.lang.Class.forName0 (기본 방법) java.base에서
/(RT.java : 2168)
at clojure.lang.RT.classForName (RT.java:2177)
at clojure.lang.RT.loadClassForName (RT.java:2196)
at clojure.lang.RT.load (RT.java:443)
at clojure.lang.RT.load (RT.java:419) 0 clojure.core $ 부하 $의 fn__5677.invoke에서 (core.clj : 5893) clojure.core $ load.invokeStatic에서
(core.clj : 5892)
clojure.core $ load.doInvoke (core.clj에서 :. 5876) clojure.lang.RestFn.invoke (RestFn.java:408) clojure.core__init.load에서
(알 수없는 소스) clojure.core__init에서
(알 수없는 소스) java.base에서
에서
/java.lang.Class.forName0 (네이티브 메소드)
at java.base/java.lang.Class.forName (Class.java:375)
at clojure.lang.RT.classForName (RT.java:2168)
at clojure.lan g.RT.classForName (RT.java:2177) clojure.lang.RT.loadClassForName에서
(RT.java:2196) clojure.lang.RT.load에서
(RT.java:443)에서 Clojure의
.lang.RT.load (RT.java:419) clojure.lang.RT.doInit (RT.java:461) clojure.lang.RT에서
에서
. (RT.java:331)
Clojure에서의 . .main (main.java:20)
에 의한 : java.lang.ClassNotFoundException가 : 자바/SQL/타임 스탬프 java.base에서
/java.lang.Class.forName0 (기본 방법)
java.base에서 /java.lang.Class.forName(Class.java:375)
at clojure. lang.RT.classForName (RT.java:2168) clojure.lang.RT.classForNameNonLoading에서
(RT.java:2181) clojure.instant의 $의 loading__5569__auto에서
____ 6869.invoke (instant.clj : 9) Clojure의에서
.instant__init.load (알 수없는 소스) clojure.instant__init에서
. (알 수없는 소스)
... 23 개

내 자바 9 JDK가 /usr/lib/jvm/java-9-oracleJAVA_HOME 변수 세트, /usr/lib/jvm/java-9-oracle/bin/java에 설치되어 있지만 나는 단지 /usr/lib/jvm/java-9-oracle/bin을 시도했다. 이것이 중요하다면 나는 xubuntu 16.04.3을 사용하고있다. 내가 xubuntu 번들로 openjdk 다시 기본 자바 JDK를 설정하려고했지만 이것은 또한 아무 소용이 아니었다.

필자는 필기체 플러그인을 설치 한 후에 REPL 을 intellij에서 실행하려고했기 때문에 전체 문제가 발생했습니다. 작동하지 않습니다. 필자는 필자가 사전에 leiningen을 설치하지 않았기 때문에 (필자는 IDE와 필기체가 함께 제공 될 것이라고 생각했다.) 필자는 추측했다. 그러나 intellij와 clojure가 실제로 실행하는 데 필요한 실제 정보는 정보의 상당 부분이 '흩어져있는'것이기 때문에 나에게 알려지지 않았습니다.

어쨌든 나는 모든 것을 작동시킬 수있는 힘든 시간을 보냈습니다. 아마도 이런 종류의 문제에 관해서는 잘 알지 못했을 것입니다. 리눅스 배포판에서만 짧았습니다. 뿐만 아니라 철저히 익숙하지 않은 clojure. 내가 명백한 것을 놓치고 있다면, 사과하겠습니다.하지만 그렇게되면 명백한 것이있을 수밖에 없습니다.

모든 제안 사항을 매우 높이 평가할 것입니다.

답변

1

Java 9의 새로운 개념 인 "modules"로 인해 문제가 생긴 것 같습니다. Clojure는 java.sql.Timestamp에 액세스 할 수 있지만 예상 할 수는 없습니다. 나는 자바 개발이나 Clojure 개발에 전념하지 않았기 때문에 그것이 당신의 문제라고 말할 수는 없다. 그러나 그것은 나에게 그렇게 보인다. 이전 JDK를 사용해보십시오.

+0

이것은 실제로 문제가되었습니다. oracle-java8-installer를 실행 한 후 모든 것이 원활하게 진행되었습니다. 빠른 답변 감사합니다. 나는 이것이 내가 버전 9에서 잘못하고있는 것일 뿐이라고 생각했다. – ianarchist

+0

여기 Java 9 관련 문제 목록을 참조하십시오. https://github.com/tobias/clojure-java-9/issues. 그리고 여기에 leinigen 특정 문제가 있습니다 : https://github.com/technomancy/leiningen/issues/2149 –

관련 문제