2014-04-21 5 views
5

मैं क्लोजर के लिए बहुत नया हूं और मुझे इसके साथ खेलने में बहुत अच्छा समय है। एक बात यह है कि मुझे कुछ परेशानी हो रही है कि त्रुटियों को कैसे पढ़ा जाए, मुझे व्यक्तिगत रूप से लगता है कि वे बहुत वर्णनात्मक नहीं हैं, लेकिन शायद यह मेरी "नवीनता" के कारण है।विधि का कोई कार्यान्वयन नहीं: प्रोटोकॉल का मेक-रीडर: # 'clojure.java.io/IOFactory कक्षा के लिए मिला: शून्य

उदाहरण के लिए, इस मुद्दे को मैं अब आ रही है जब मैं अपने अंगूठी सर्वर शुरू करने के लिए (मैं यदि आवश्यक हो तो अधिक जानकारी प्रदान कर सकते हैं) की कोशिश: कैसे करना

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 

यह मेरे लिए बहुत अस्पष्ट है, मुझे पता है कि मैंने क्या गलत किया? मुझे किसी भी "मेक-रीडर", प्रोटोकॉल या IOFactory से निपटना याद नहीं है।

उत्तर

8

यह बिना किसी संदर्भ के जवाब देने का एक मुश्किल सवाल है। हालांकि आप http://dev.clojure.org/jira/browse/CLJ-1210 की गड़बड़ी कर रहे हैं जो बताते हैं कि यह त्रुटि संदेश स्पष्ट रूप से अनुपयोगी है!

कृपया Clojure Clostache error - No implementation of method: :make-reader of protocol: #'clojure.java.io/IOFactory found for class: nil पर जा सकते हैं जो एक डुप्लीकेट हो सकता है। इसका लंबा और छोटा यह है कि आप जिस संसाधन का जिक्र कर रहे हैं वह मौजूद नहीं है। नतीजतन इसे "शून्य" के रूप में पुनर्प्राप्त किया जाता है जिसके परिणामस्वरूप आपको दिखाई देने वाली परेशानी होती है। शायद एक ऐसा मामला जहां एक पुस्तकालय संसाधन के लिए अपवाद नहीं डाल सकता है (या कम से कम एक अपवाद फेंकने वाला संस्करण है)।

इस पर चारों ओर खोदने के तरीकों में से एक सेल्मर स्रोत कोड को देखना था, क्योंकि यह स्टैक ट्रेस का पहला गैर-क्लोजर.कोर टुकड़ा है। पहले काम करता है में से एक ...

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

यहाँ से कुछ कटौती और मेरे ऊपर गया googling की एक त्वरित बिट।

[2017 अद्यतन: बेकार त्रुटि अंततः, Clojure 1.8 में तय किया गया था इसलिए उम्मीद है कि लोग अब इस मुद्दे को देखेंगे!]

+1

धन्यवाद एक बहुत! यह निश्चित रूप से मुझे सही दिशा में जाने में मदद की। यह पता चला कि मैंने अपने एचटीएमएल में से किसी एक फ़ाइल में पथ की गलत वर्तनी की है: {% "चित्र_गैलरी/विचार/टेम्पलेट/base.html"%} को वास्तव में "टेम्पलेट्स" होना चाहिए। मुझे आश्चर्य है कि क्या सीएलजे -1210 मुद्दा क्लोजर के सबसे हाल के संस्करण पर है। –

+0

ऐसा लगता है कि एक पैच संलग्न है इसलिए अच्छी तरह से 1.7.0 बना सकता है। – pete23

+1

@ गुस्तावमोतिस इस संकेत के लिए बहुत बहुत धन्यवाद। वही अजीब त्रुटि थी, जो स्पष्ट रूप से मेरे संसाधन फ़ोल्डर में गलत परियोजना संरचना के कारण थी। – tareq

संबंधित मुद्दे