没有方法的执行::make-reader的协议:#'clojure.java.io / IOFactory找到类:nil [英] No implementation of method: :make-reader of protocol: #'clojure.java.io/IOFactory found for class: nil

查看:197
本文介绍了没有方法的执行::make-reader的协议:#'clojure.java.io / IOFactory找到类:nil的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是Clojure的新手,我玩得很开心。有一件事我有一些麻烦是如何读错误,我个人认为他们不是很描述,但这可能是由于我的新生。

I'm very new to Clojure and I'm having a great time playing with it. One thing I'm having some trouble with is how to read the errors, I personally think they're not very descriptive, but that's probably due to my "newbieness".

例如,我现在遇到的问题是当我尝试启动环网服务器(我可以提供更多的细节,如果需要):

For example, the issue I'm having now is when I try to start up my ring server (I can provide more details if needed):

Started server on port 3000
java.lang.IllegalArgumentException: No implementation of method: :make-reader of protocol: #'clojure.java.io/IOFactory found for class: nil
          core_deftype.clj:544 clojure.core/-cache-protocol-fn
                     io.clj:69 clojure.java.io/fn[fn]
                    io.clj:102 clojure.java.io/reader
               RestFn.java:410 clojure.lang.RestFn.invoke
             validator.clj:161 selmer.validator/validate-tags
             validator.clj:175 selmer.validator/validate
       template_parser.clj:155 selmer.template-parser/read-template
       template_parser.clj:206 selmer.template-parser/preprocess-template
               RestFn.java:410 clojure.lang.RestFn.invoke
                parser.clj:211 selmer.parser/parse-file
                parser.clj:234 selmer.parser/parse
               RestFn.java:442 clojure.lang.RestFn.invoke
                 parser.clj:99 selmer.parser/render-file
               RestFn.java:425 clojure.lang.RestFn.invoke
                 layout.clj:17 picture-gallery.views.layout/picture-gallery.views.layout.RenderablePage
                   core.clj:94 compojure.core/make-route[fn]
                   core.clj:40 compojure.core/if-route[fn]
                   core.clj:25 compojure.core/if-method[fn]
                  core.clj:107 compojure.core/routing[fn]
                 core.clj:2515 clojure.core/some
                  core.clj:107 compojure.core/routing
               RestFn.java:139 clojure.lang.RestFn.applyTo
                  core.clj:626 clojure.core/apply
                  core.clj:112 compojure.core/routes[fn]
                  core.clj:107 compojure.core/routing[fn]
                 core.clj:2515 clojure.core/some
                  core.clj:107 compojure.core/routing
               RestFn.java:139 clojure.lang.RestFn.applyTo
                  core.clj:626 clojure.core/apply
                  core.clj:112 compojure.core/routes[fn]
             middleware.clj:44 noir.util.middleware/wrap-request-map[fn]
         keyword_params.clj:32 ring.middleware.keyword-params/wrap-keyword-params[fn]
          nested_params.clj:70 ring.middleware.nested-params/wrap-nested-params[fn]
                 params.clj:58 ring.middleware.params/wrap-params[fn]
             middleware.clj:12 hiccup.middleware/wrap-base-url[fn]
      multipart_params.clj:107 ring.middleware.multipart-params/wrap-multipart-params[fn]
            middleware.clj:139 noir.util.middleware/wrap-access-rules[fn]
            validation.clj:135 noir.validation/wrap-noir-validation[fn]
                cookies.clj:66 noir.cookies/noir-cookies[fn]
               cookies.clj:171 ring.middleware.cookies/wrap-cookies[fn]
               session.clj:141 noir.session/noir-flash[fn]
                  flash.clj:31 ring.middleware.flash/wrap-flash[fn]
                session.clj:96 noir.session/noir-session[fn]
                session.clj:85 ring.middleware.session/wrap-session[fn]
                  Var.java:379 clojure.lang.Var.invoke
                 reload.clj:18 ring.middleware.reload/wrap-reload[fn]
             stacktrace.clj:17 ring.middleware.stacktrace/wrap-stacktrace-log[fn]
             stacktrace.clj:80 ring.middleware.stacktrace/wrap-stacktrace-web[fn]
                  jetty.clj:18 ring.adapter.jetty/proxy-handler[fn]
              (Unknown Source) ring.adapter.jetty.proxy$org.eclipse.jetty.server.handler.AbstractHandler$ff19274a.handle
       HandlerWrapper.java:116 org.eclipse.jetty.server.handler.HandlerWrapper.handle
               Server.java:363 org.eclipse.jetty.server.Server.handle
   AbstractHttpConnection.java:483 org.eclipse.jetty.server.AbstractHttpConnection.handleRequest
   AbstractHttpConnection.java:920 org.eclipse.jetty.server.AbstractHttpConnection.headerComplete
   AbstractHttpConnection.java:982 org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete
           HttpParser.java:635 org.eclipse.jetty.http.HttpParser.parseNext
           HttpParser.java:235 org.eclipse.jetty.http.HttpParser.parseAvailable
   AsyncHttpConnection.java:82 org.eclipse.jetty.server.AsyncHttpConnection.handle
SelectChannelEndPoint.java:628 org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle
 SelectChannelEndPoint.java:52 org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run
     QueuedThreadPool.java:608 org.eclipse.jetty.util.thread.QueuedThreadPool.runJob
     QueuedThreadPool.java:543 org.eclipse.jetty.util.thread.QueuedThreadPool$3.run
               Thread.java:722 java.lang.Thread.run

这对我来说很模糊,我怎么知道我做错了什么?我不记得处理任何make-reader,协议或IOFactory。

This is so obscure to me, how do I know exactly what I did wrong? I don't remember dealing with any "make-reader", protocols or IOFactory.

推荐答案

这是一个棘手的问题,没有多少上下文。但是,你似乎是下落的犯规 http://dev.clojure.org/jira/browse/CLJ-1210 ,它指出此错误消息显然无用!

This is a tricky question to answer without much context. However you seem to be falling foul of http://dev.clojure.org/jira/browse/CLJ-1210 which points out that this error message is distinctly unhelpful!

请参阅 Clojure Clostache错误 - 没有实现方法::make-reader的协议:#'clojure.java.io / IOFactory found对于class:nil ,这可能是一个重复。它的长短是你所指的一些资源不存在。结果它被检索为nil,然后导致你看到的麻烦。也许一个库可能会抛出资源未找到异常(或至少有一个异常抛出的变体)。

Please can you look at Clojure Clostache error - No implementation of method: :make-reader of protocol: #'clojure.java.io/IOFactory found for class: nil which may well be a duplicate. The long and the short of it is that some resource you are referring to does not exist. As a result it is retrieved as "nil" which then results in the trouble you see. Perhaps a case where a library might throw an exception for resource-not-found (or at least have an exception throwing variant).

我挖了一个方法围绕这是看看selmer源代码,因为这是第一个非clojure.core的堆栈跟踪。这是做的第一件事是...

One of the ways in which I dug around on this was to look at the selmer source code, as that is the first non-clojure.core piece of the stack trace. One of the first things this does is...

(defn validate-tags [template]
    (with-open [rdr (reader template)]

从这里一些扣除和一点点谷歌搜索让我上面。

From here some deduction and a quick bit of googling got me to the above.

这篇关于没有方法的执行::make-reader的协议:#'clojure.java.io / IOFactory找到类:nil的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆