2011-11-03 39 views
9

我在Noir项目上运行lein run时出现编译错误。它正在工作,然后突然停止工作。我的怀疑是错误是与试图在项目文件中的依赖关系向量中包含[org.pegdown/pegdown "1.1.0"]有关,但我不确定。我删除了该行,运行lein clean; lein deps,然后再次尝试lein run,但错误仍然存​​在。混淆Clojure编译错误 - 不良行报告?

下面是我得到的两个单独的错误。我不知道是什么触发了这个错误。我的所有文件(位于名为“benekastah”的名称空间)在第1行报告错误,这通常是正常ns调用。

第二个错误似乎表明问题出现在post_modify.clj中,但之前工作正常,我没有更改它。

我试过找到的解决方案here,它似乎没有工作。

任何洞察这些混淆错误?

错误1:

Exception in thread "main" java.lang.RuntimeException: java.lang.ExceptionInInitializerError 
at clojure.lang.Util.runtimeException(Util.java:165) 
at clojure.lang.Compiler.eval(Compiler.java:6476) 
at clojure.lang.Compiler.load(Compiler.java:6902) 
at clojure.lang.RT.loadResourceScript(RT.java:357) 
at clojure.lang.RT.loadResourceScript(RT.java:348) 
at clojure.lang.RT.load(RT.java:427) 
at clojure.lang.RT.load(RT.java:398) 
at clojure.core$load$fn__4610.invoke(core.clj:5386) 
at clojure.core$load.doInvoke(core.clj:5385) 
at clojure.lang.RestFn.invoke(RestFn.java:408) 
at clojure.core$load_one.invoke(core.clj:5200) 
at clojure.core$load_lib.doInvoke(core.clj:5237) 
at clojure.lang.RestFn.applyTo(RestFn.java:142) 
at clojure.core$apply.invoke(core.clj:602) 
at clojure.core$load_libs.doInvoke(core.clj:5271) 
at clojure.lang.RestFn.applyTo(RestFn.java:137) 
at clojure.core$apply.invoke(core.clj:602) 
at clojure.core$require.doInvoke(core.clj:5352) 
at clojure.lang.RestFn.invoke(RestFn.java:408) 
at user$eval1.invoke(NO_SOURCE_FILE:1) 
at clojure.lang.Compiler.eval(Compiler.java:6465) 
at clojure.lang.Compiler.eval(Compiler.java:6454) 
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) 
Caused by: java.lang.ExceptionInInitializerError 
at java.lang.Class.forName0(Native Method) 
at java.lang.Class.forName(Class.java:247) 
at clojure.lang.RT.loadClassForName(RT.java:2030) 
at clojure.lang.RT.load(RT.java:417) 
at clojure.lang.RT.load(RT.java:398) 
at clojure.core$load$fn__4610.invoke(core.clj:5386) 
at clojure.core$load.doInvoke(core.clj:5385) 
at clojure.lang.RestFn.invoke(RestFn.java:408) 
at clojure.core$load_one.invoke(core.clj:5200) 
at clojure.core$load_lib.doInvoke(core.clj:5237) 
at clojure.lang.RestFn.applyTo(RestFn.java:142) 
at clojure.core$apply.invoke(core.clj:602) 
at clojure.core$load_libs.doInvoke(core.clj:5271) 
at clojure.lang.RestFn.applyTo(RestFn.java:137) 
at clojure.core$apply.invoke(core.clj:604) 
at clojure.core$use.doInvoke(core.clj:5363) 
at clojure.lang.RestFn.invoke(RestFn.java:512) 
at benekastah.views.common$loading__4505__auto__.invoke(common.clj:1) 
at benekastah.views.common__init.load(Unknown Source) 
at benekastah.views.common__init.<clinit>(Unknown Source) 
at java.lang.Class.forName0(Native Method) 
at java.lang.Class.forName(Class.java:247) 
at clojure.lang.RT.loadClassForName(RT.java:2030) 
at clojure.lang.RT.load(RT.java:417) 
at clojure.lang.RT.load(RT.java:398) 
at clojure.core$load$fn__4610.invoke(core.clj:5386) 
at clojure.core$load.doInvoke(core.clj:5385) 
at clojure.lang.RestFn.invoke(RestFn.java:408) 
at clojure.core$load_one.invoke(core.clj:5200) 
at clojure.core$load_lib.doInvoke(core.clj:5237) 
at clojure.lang.RestFn.applyTo(RestFn.java:142) 
at clojure.core$apply.invoke(core.clj:602) 
at clojure.core$load_libs.doInvoke(core.clj:5271) 
at clojure.lang.RestFn.applyTo(RestFn.java:137) 
at clojure.core$apply.invoke(core.clj:602) 
at clojure.core$require.doInvoke(core.clj:5352) 
at clojure.lang.RestFn.invoke(RestFn.java:512) 
at benekastah.views.blog.index$loading__4505__auto__.invoke(index.clj:1) 
at benekastah.views.blog.index__init.load(Unknown Source) 
at benekastah.views.blog.index__init.<clinit>(Unknown Source) 
at java.lang.Class.forName0(Native Method) 
at java.lang.Class.forName(Class.java:247) 
at clojure.lang.RT.loadClassForName(RT.java:2030) 
at clojure.lang.RT.load(RT.java:417) 
at clojure.lang.RT.load(RT.java:398) 
at clojure.core$load$fn__4610.invoke(core.clj:5386) 
at clojure.core$load.doInvoke(core.clj:5385) 
at clojure.lang.RestFn.invoke(RestFn.java:408) 
at clojure.core$load_one.invoke(core.clj:5200) 
at clojure.core$load_lib.doInvoke(core.clj:5237) 
at clojure.lang.RestFn.applyTo(RestFn.java:142) 
at clojure.core$apply.invoke(core.clj:602) 
at clojure.core$load_libs.doInvoke(core.clj:5271) 
at clojure.lang.RestFn.applyTo(RestFn.java:137) 
at clojure.core$apply.invoke(core.clj:602) 
at clojure.core$require.doInvoke(core.clj:5352) 
at clojure.lang.RestFn.invoke(RestFn.java:408) 
at noir.server$load_views.doInvoke(server.clj:25) 
at clojure.lang.RestFn.invoke(RestFn.java:408) 
at benekastah.server$eval10.invoke(server.clj:5) 
at clojure.lang.Compiler.eval(Compiler.java:6465) 
... 31 more 
Caused by: java.lang.NullPointerException 
at clojure.core$refer.doInvoke(core.clj:3775) 
at clojure.lang.RestFn.invoke(RestFn.java:410) 
at clojure.lang.AFn.applyToHelper(AFn.java:161) 
at clojure.lang.RestFn.applyTo(RestFn.java:132) 
at clojure.core$apply.invoke(core.clj:602) 
at clojure.core$load_lib.doInvoke(core.clj:5252) 
at clojure.lang.RestFn.applyTo(RestFn.java:142) 
at clojure.core$apply.invoke(core.clj:602) 
at clojure.core$load_libs.doInvoke(core.clj:5271) 
at clojure.lang.RestFn.applyTo(RestFn.java:137) 
at clojure.core$apply.invoke(core.clj:604) 
at clojure.core$use.doInvoke(core.clj:5363) 
at clojure.lang.RestFn.invoke(RestFn.java:408) 
at benekastah.css.base__init.load(Unknown Source) 
at benekastah.css.base__init.<clinit>(Unknown Source) 
... 92 more 

错误2:

Exception in thread "main" java.lang.NullPointerException, compiling:(post_modify.clj:1) 
at clojure.lang.Compiler$InvokeExpr.eval(Compiler.java:3342) 
at clojure.lang.Compiler.compile1(Compiler.java:6985) 
at clojure.lang.Compiler.compile1(Compiler.java:6975) 
at clojure.lang.Compiler.compile(Compiler.java:7046) 
at clojure.lang.RT.compile(RT.java:385) 
at clojure.lang.RT.load(RT.java:425) 
at clojure.lang.RT.load(RT.java:398) 
at clojure.core$load$fn__4610.invoke(core.clj:5386) 
at clojure.core$load.doInvoke(core.clj:5385) 
at clojure.lang.RestFn.invoke(RestFn.java:408) 
at clojure.core$load_one.invoke(core.clj:5200) 
at clojure.core$load_lib.doInvoke(core.clj:5237) 
at clojure.lang.RestFn.applyTo(RestFn.java:142) 
at clojure.core$apply.invoke(core.clj:602) 
at clojure.core$load_libs.doInvoke(core.clj:5271) 
at clojure.lang.RestFn.applyTo(RestFn.java:137) 
at clojure.core$apply.invoke(core.clj:602) 
at clojure.core$require.doInvoke(core.clj:5352) 
at clojure.lang.RestFn.invoke(RestFn.java:408) 
at noir.server$load_views.doInvoke(server.clj:25) 
at clojure.lang.RestFn.applyTo(RestFn.java:137) 
at clojure.lang.Compiler$InvokeExpr.eval(Compiler.java:3337) 
at clojure.lang.Compiler.compile1(Compiler.java:6985) 
at clojure.lang.Compiler.compile(Compiler.java:7046) 
at clojure.lang.RT.compile(RT.java:385) 
at clojure.lang.RT.load(RT.java:425) 
at clojure.lang.RT.load(RT.java:398) 
at clojure.core$load$fn__4610.invoke(core.clj:5386) 
at clojure.core$load.doInvoke(core.clj:5385) 
at clojure.lang.RestFn.invoke(RestFn.java:408) 
at clojure.core$load_one.invoke(core.clj:5200) 
at clojure.core$compile$fn__4615.invoke(core.clj:5397) 
at clojure.core$compile.invoke(core.clj:5396) 
at user$eval27.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) 
Caused by: java.lang.NullPointerException 
at clojure.lang.Compiler$ObjExpr.emitVar(Compiler.java:4728) 
at clojure.lang.Compiler$DefExpr.emit(Compiler.java:395) 
at clojure.lang.Compiler.compile1(Compiler.java:6984) 
at clojure.lang.Compiler.compile(Compiler.java:7046) 
at clojure.lang.RT.compile(RT.java:385) 
at clojure.lang.RT.load(RT.java:425) 
at clojure.lang.RT.load(RT.java:398) 
at clojure.core$load$fn__4610.invoke(core.clj:5386) 
at clojure.core$load.doInvoke(core.clj:5385) 
at clojure.lang.RestFn.invoke(RestFn.java:408) 
at clojure.core$load_one.invoke(core.clj:5200) 
at clojure.core$load_lib.doInvoke(core.clj:5237) 
at clojure.lang.RestFn.applyTo(RestFn.java:142) 
at clojure.core$apply.invoke(core.clj:602) 
at clojure.core$load_libs.doInvoke(core.clj:5271) 
at clojure.lang.RestFn.applyTo(RestFn.java:137) 
at clojure.core$apply.invoke(core.clj:602) 
at clojure.core$require.doInvoke(core.clj:5352) 
at clojure.lang.RestFn.invoke(RestFn.java:551) 
at benekastah.views.blog.post_modify$loading__4505__auto__.invoke(post_modify.clj:1) 
at clojure.lang.AFn.applyToHelper(AFn.java:159) 
at clojure.lang.AFn.applyTo(AFn.java:151) 
at clojure.lang.Compiler$InvokeExpr.eval(Compiler.java:3337) 
... 46 more 
Exception in thread "main" java.lang.RuntimeException: java.lang.ExceptionInInitializerError 
at clojure.lang.Util.runtimeException(Util.java:165) 
at clojure.lang.Compiler.eval(Compiler.java:6476) 
at clojure.lang.Compiler.load(Compiler.java:6902) 
at clojure.lang.RT.loadResourceScript(RT.java:357) 
at clojure.lang.RT.loadResourceScript(RT.java:348) 
at clojure.lang.RT.load(RT.java:427) 
at clojure.lang.RT.load(RT.java:398) 
at clojure.core$load$fn__4610.invoke(core.clj:5386) 
at clojure.core$load.doInvoke(core.clj:5385) 
at clojure.lang.RestFn.invoke(RestFn.java:408) 
at clojure.core$load_one.invoke(core.clj:5200) 
at clojure.core$load_lib.doInvoke(core.clj:5237) 
at clojure.lang.RestFn.applyTo(RestFn.java:142) 
at clojure.core$apply.invoke(core.clj:602) 
at clojure.core$load_libs.doInvoke(core.clj:5271) 
at clojure.lang.RestFn.applyTo(RestFn.java:137) 
at clojure.core$apply.invoke(core.clj:602) 
at clojure.core$require.doInvoke(core.clj:5352) 
at clojure.lang.RestFn.invoke(RestFn.java:408) 
at user$eval1.invoke(NO_SOURCE_FILE:1) 
at clojure.lang.Compiler.eval(Compiler.java:6465) 
at clojure.lang.Compiler.eval(Compiler.java:6454) 
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) 
Caused by: java.lang.ExceptionInInitializerError 
at java.lang.Class.forName0(Native Method) 
at java.lang.Class.forName(Class.java:247) 
at clojure.lang.RT.loadClassForName(RT.java:2030) 
at clojure.lang.RT.load(RT.java:417) 
at clojure.lang.RT.load(RT.java:398) 
at clojure.core$load$fn__4610.invoke(core.clj:5386) 
at clojure.core$load.doInvoke(core.clj:5385) 
at clojure.lang.RestFn.invoke(RestFn.java:408) 
at clojure.core$load_one.invoke(core.clj:5200) 
at clojure.core$load_lib.doInvoke(core.clj:5237) 
at clojure.lang.RestFn.applyTo(RestFn.java:142) 
at clojure.core$apply.invoke(core.clj:602) 
at clojure.core$load_libs.doInvoke(core.clj:5271) 
at clojure.lang.RestFn.applyTo(RestFn.java:137) 
at clojure.core$apply.invoke(core.clj:604) 
at clojure.core$use.doInvoke(core.clj:5363) 
at clojure.lang.RestFn.invoke(RestFn.java:512) 
at benekastah.views.common$loading__4505__auto__.invoke(common.clj:1) 
at benekastah.views.common__init.load(Unknown Source) 
at benekastah.views.common__init.<clinit>(Unknown Source) 
at java.lang.Class.forName0(Native Method) 
at java.lang.Class.forName(Class.java:247) 
at clojure.lang.RT.loadClassForName(RT.java:2030) 
at clojure.lang.RT.load(RT.java:417) 
at clojure.lang.RT.load(RT.java:398) 
at clojure.core$load$fn__4610.invoke(core.clj:5386) 
at clojure.core$load.doInvoke(core.clj:5385) 
at clojure.lang.RestFn.invoke(RestFn.java:408) 
at clojure.core$load_one.invoke(core.clj:5200) 
at clojure.core$load_lib.doInvoke(core.clj:5237) 
at clojure.lang.RestFn.applyTo(RestFn.java:142) 
at clojure.core$apply.invoke(core.clj:602) 
at clojure.core$load_libs.doInvoke(core.clj:5271) 
at clojure.lang.RestFn.applyTo(RestFn.java:137) 
at clojure.core$apply.invoke(core.clj:602) 
at clojure.core$require.doInvoke(core.clj:5352) 
at clojure.lang.RestFn.invoke(RestFn.java:512) 
at benekastah.views.blog.index$loading__4505__auto__.invoke(index.clj:1) 
at benekastah.views.blog.index__init.load(Unknown Source) 
at benekastah.views.blog.index__init.<clinit>(Unknown Source) 
at java.lang.Class.forName0(Native Method) 
at java.lang.Class.forName(Class.java:247) 
at clojure.lang.RT.loadClassForName(RT.java:2030) 
at clojure.lang.RT.load(RT.java:417) 
at clojure.lang.RT.load(RT.java:398) 
at clojure.core$load$fn__4610.invoke(core.clj:5386) 
at clojure.core$load.doInvoke(core.clj:5385) 
at clojure.lang.RestFn.invoke(RestFn.java:408) 
at clojure.core$load_one.invoke(core.clj:5200) 
at clojure.core$load_lib.doInvoke(core.clj:5237) 
at clojure.lang.RestFn.applyTo(RestFn.java:142) 
at clojure.core$apply.invoke(core.clj:602) 
at clojure.core$load_libs.doInvoke(core.clj:5271) 
at clojure.lang.RestFn.applyTo(RestFn.java:137) 
at clojure.core$apply.invoke(core.clj:602) 
at clojure.core$require.doInvoke(core.clj:5352) 
at clojure.lang.RestFn.invoke(RestFn.java:408) 
at noir.server$load_views.doInvoke(server.clj:25) 
at clojure.lang.RestFn.invoke(RestFn.java:408) 
at benekastah.server$eval10.invoke(server.clj:5) 
at clojure.lang.Compiler.eval(Compiler.java:6465) 
... 31 more 
Caused by: java.lang.NullPointerException 
at clojure.core$refer.doInvoke(core.clj:3775) 
at clojure.lang.RestFn.invoke(RestFn.java:410) 
at clojure.lang.AFn.applyToHelper(AFn.java:161) 
at clojure.lang.RestFn.applyTo(RestFn.java:132) 
at clojure.core$apply.invoke(core.clj:602) 
at clojure.core$load_lib.doInvoke(core.clj:5252) 
at clojure.lang.RestFn.applyTo(RestFn.java:142) 
at clojure.core$apply.invoke(core.clj:602) 
at clojure.core$load_libs.doInvoke(core.clj:5271) 
at clojure.lang.RestFn.applyTo(RestFn.java:137) 
at clojure.core$apply.invoke(core.clj:604) 
at clojure.core$use.doInvoke(core.clj:5363) 
at clojure.lang.RestFn.invoke(RestFn.java:408) 
at benekastah.css.base__init.load(Unknown Source) 
at benekastah.css.base__init.<clinit>(Unknown Source) 
... 92 more 

benekastah.views.blog.post_modify.clj

(ns benekastah.views.blog.post-modify 
    (:require [noir.response :as resp] 
      [somnium.congomongo :as congo] 
      [clj-time.core :as time] 
      [clj-time.format :as time-format] 
      [clj-time.coerce :as time-coerce] 
      [clojure.string :as cl-string] 
      [benekastah.lib.string :as b-string]) 
    (:use noir.core 
     benekastah.models.db)) 

(defn- save-post 
    [post] 
    (try (save! :post post) 
     (resp/redirect "/") 
    (catch Exception e 
     {:status 500 
     :body (str "Could not save post: " e)}))) 

(defpage [:post "/post"] [& param-lists] 
     (let [params (populate-defaults 
         :post 
         (apply hash-map (apply concat param-lists))) 
       {date :date, title :title } params 
       slug (str 
         (time-format/unparse 
         (time-format/formatters :date) 
         (time-coerce/from-date date)) 
         "_" 
         (cl-string/replace (cl-string/trim title) 
             #"[^\w\-]" 
             "_")) 
       p (merge params {:slug slug})] 
      (save-post p))) 

(defpage [:put "/post"] {:keys [id]} 
     (let [post (congo/fetch-by-id id)] 
      (save-post post))) 

(defpage [:delete "/post"] {:keys [id]} 
     (let [post (congo/fetch-by-id id)] 
      (congo/destroy! :post post))) 
+2

不是您的问题的答案,但是如果利用repl来增量构建其应用程序,而不是编写一堆代码,然后查看它是否全部有效,通常会避免这些问题。 –

+0

同意。我确实倾向于这样发展,这让我更加困惑。失败之后的步骤倒过来了,但问题依然存在。我试图追溯我的步骤,但没有成功。这可能与某种特定类型的错误有关吗? – benekastah

+1

在加载benekastah.css.base期间尝试引用某些内容时,两个堆栈跟踪的底部都是NullPointerException。可能想看看那里。另外,1.3.0有更漂亮的堆栈跟踪。 –

回答

1

以下是我对 “固定” 我的问题:在回复@ Alex的评论建议我看看benekastah.css.base,我评论了该文件的大部分内容并重新启动了服务器。此时,错误消息指向benekastah.css.blog,我在那里再次注释了该文件的大部分内容。然后,错误消息指向benekastah.css.theme(benekastah.css。*组中的最后一个文件),此时我采用与其他两个文件相同的步骤。然后服务器工作。所以,在工作中使用backwords时,我取消了每个文件中的代码的注释,并且一切似乎都再次正常运行。我也能够将依赖添加回pegdown。奇怪的。

如果任何人对clojure,leiningen或java的工作方式有任何洞察力,那么这将会导致任何这种情况,我会有兴趣听到它。

为了记录,我为我的benekastah.css。*文件使用了cssgen。它似乎大部分工作正常。

3

我有一个类似的问题,我真的到了它的根。原来我的代码中有我自己的get和remove函数定义。这在某种程度上干扰了clojure.core在该命名空间中的get和remove函数定义。那些NPE(汇编)是结果。为了解决这个问题,我所做的只是将我的函数定义重命名为getk和removek。

HTH

+0

使用像'getk'这样的愚蠢的名字击败了命名空间的全部观点:)而是诉诸于'refer-clojure'而不是干净的解决方案。 – vemv

16

这是当一个命名空间的功能取代了核心功能引起的,像get。你可以在clojure-dev邮件列表here上找到它的一些讨论。解决方案,而不是重命名您的功能是将(:refer-clojure :exclude [name-of-replaced-function])放在您的ns表格中。

+0

看起来这是为了对@Nutritioustim发表评论。 +1,但。我一直在想这件事。 – benekastah

+0

Aaaand这对我来说只是解决了一个非常令人困惑的问题。再次感谢! – benekastah

+0

Dave的回答帮助我摆脱了这个问题! – qiuxiafei