2011-11-06 49 views
1

我學習Clojure的,我在這很醜陋,反慣用的,愚蠢的,我寫的代碼中發現了一個問題:NullPointerException異常的Clojure調用println

(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))) 

當我運行這個文件,我得到正確的答案(打印藝術家和標題)但它會拋出一個例外:

[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 ...爲什麼你認爲錯誤是在(.traccia getLine)? – Siscia

+0

啊,我以爲沒有打印標題。 –

回答

0

我不知道,但我認爲這只是因爲沒有定義的主要方法。

嘗試從過去的高清更改代碼:

(defn -main[] 
    (let [traccia (. echo-nest uploadTrack music true)] 
    (do 
     (. traccia waitForAnalysis 30) 
     (println (. traccia getArtistName) (. traccia getTitle))))) 

當雷音編譯你的代碼,它需要運行頂級陳述,其中包括你的方法調用,因爲它們不是隱藏在功能。當涉及到運行你的代碼時,它會有一個異常,因爲它沒有任何運行。

+0

耶穌,非常感謝你,這是寫在lein文件?我沒有找到.. – Siscia

+0

嘗試幫助幫助運行 –

+0

:尷尬:;-) – Siscia

相關問題