2011-11-06 51 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

相关问题