我學習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)
爲什麼? 我該如何解決?
感謝
您需要確定首先拋出異常的位置。它實際上看起來像這裏的(.traccia getTitle)調用 - 如果你刪除它,它是否工作? –
好的,謝謝你的回答,不,如果我刪除(.traccia getTitle)不起作用,並且它也不起作用,如果我刪除evrythinghs除了命名空間的聲明,所以我敢肯定,問題是lein background ...爲什麼你認爲錯誤是在(.traccia getLine)? – Siscia
啊,我以爲沒有打印標題。 –