2011-11-06 2 views
1

을에 println 나는 내가 쓴이 매우 추한, 안티 관용적, 바보 코드에서 문제가 발견 :이 파일을 실행하면NullPointerException이의 Clojure에 내가 Clojure를 배우고

(ns music-tag.core 
    (:import 
    (java.io.File) 
    (com.echonest.api.v4.EchoNestAPI) 
    (com.echonest.api.v4.Track))) 

(def api-key "JRZSJUMBK8VOOP0L2") 

(def music (new java.io.File "/home/simo/Musica/musica_mp3/Rabiosa-Shakira.mp3")) 
(def echo-nest (new com.echonest.api.v4.EchoNestAPI api-key)) 
(def traccia (. echo-nest uploadTrack music true)) 

(. traccia waitForAnalysis 30) 

(do (println (. traccia getArtistName) (. traccia getTitle))) 

내가 바로 답변을 얻을 (인쇄 아티스트 및 제목). 예외를 throw합니다.

[email protected]:~/music-tag$ lein run 
Shakira Rabiosa (Featuring Pitbull) 
Exception in thread "main" java.lang.NullPointerException 
    at user$eval39.invoke(NO_SOURCE_FILE:1) 
    at clojure.lang.Compiler.eval(Compiler.java:6465) 
    at clojure.lang.Compiler.eval(Compiler.java:6455) 
    at clojure.lang.Compiler.eval(Compiler.java:6431) 
    at clojure.core$eval.invoke(core.clj:2795) 
    at clojure.main$eval_opt.invoke(main.clj:296) 
    at clojure.main$initialize.invoke(main.clj:315) 
    at clojure.main$null_opt.invoke(main.clj:348) 
    at clojure.main$main.doInvoke(main.clj:426) 
    at clojure.lang.RestFn.invoke(RestFn.java:421) 
    at clojure.lang.Var.invoke(Var.java:405) 
    at clojure.lang.AFn.applyToHelper(AFn.java:163) 
    at clojure.lang.Var.applyTo(Var.java:518) 
    at clojure.main.main(main.java:37) 

왜? 어떻게 해결할 수 있습니까 ???

덕분에

+0

먼저 예외가 발생한 위치를 식별해야합니다. 실제로 여기에서 (. traccia getTitle) 호출처럼 보입니다. 제거하면 작동합니까? –

+0

그래, 고마워, 답변을 주셔서 감사합니다. (. traccia getTitle)가 작동하지 않습니다. 또한 네임 스페이스 선언을 제외하고 evrythinghs를 제거하면 작동하지 않습니다. 그래서 문제가 lein background ... 왜 당신은 그 오류가 (.tacccel getLine)에 있다고 생각 했습니까 ?? – Siscia

+0

아, 나는 제목이 인쇄 된 줄 알았는데. –

답변

0

잘 모르겠지만,이 정의 된 주요 방법이 없기 때문에 그냥 생각합니다.

는 마지막 데프에서 코드를 변경해보십시오 :

lein이 코드를 컴파일 할 때, 그들은이 숨겨져하지 않는 한 당신의 방법은 호출을 포함하는 최상위 문을 실행하는 데 필요한

(defn -main[] 
    (let [traccia (. echo-nest uploadTrack music true)] 
    (do 
     (. traccia waitForAnalysis 30) 
     (println (. traccia getArtistName) (. traccia getTitle))))) 
기능. 코드 실행에 관해서는 예외가 없으므로 실행하지 않아도됩니다.

+0

Yesss, 정말 고마워,이 편지는 lein 문서에 적혀 있니? 내가 찾지 못했던 .. – Siscia

+0

lein 도움을 시도해보십시오 –

+0

: 당혹 스럽네요 :-) – Siscia

관련 문제