2014-04-21 6 views
5

Clojure'a çok yeniyim ve onunla harika zaman geçiriyorum. Sorun yaşadığım bir şey, hataların nasıl okunacağıdır, kişisel olarak çok açıklayıcı olmadıklarını düşünüyorum, ancak bu muhtemelen “yeni bir durum” dan kaynaklanıyor. nasıl,Yöntemin uygulanmaması: protokolün yapıcı-okuyucusu: # 'clojure.java.io/IOFactory sınıf için bulundu: nil

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 

Bu benim için çok belirsiz: Ben (gerekirse ben daha fazla ayrıntı sağlayabilir) benim halka sunucusunu başlatmaya çalıştığınızda

Mesela ben şimdi yaşıyorum konudur Neyi yanlış yaptığımı tam olarak biliyorum. Herhangi bir “make-reader”, protokol veya IOFactory ile uğraştığımı hatırlamıyorum.

cevap

8

Bu, pek çok bağlam olmadan yanıtlanması zor bir sorudur. Ancak, bu hata mesajının açıkça yararsız olduğuna işaret eden http://dev.clojure.org/jira/browse/CLJ-1210'un faulü düşüyor görünüyorsunuz!

Lütfen bir kopya olabilir Clojure Clostache error - No implementation of method: :make-reader of protocol: #'clojure.java.io/IOFactory found for class: nil bakabilirsiniz. Uzun ve kısa olanı, atıfta bulunduğunuz bazı kaynakların mevcut olmamasıdır. Sonuç olarak "nil" olarak algılanır ve bu da gördüğünüz sorunla sonuçlanır. Belki de bir kütüphanenin, kaynak bulunmayan (veya en azından bir istisna atma varyantı var) için bir istisna atabileceği bir durumdur.

Bunun üzerine kazdımın yollarından biri, yığın izinin ilk non-clojure.core parçası olduğu için, kaynak koduna bakmaktı. bu does ilk şeylerden biri ...

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

Buradan bazı kesinti ve yukarıda beni googling hızlı bir bit.

[2017 güncelleme: yararsız hata nihayetinde Clojure 1.8 giderilmiştir yani umarım insanlar artık bu sorunu göreceksiniz!]

+1

Çok teşekkürler! Bu kesinlikle doğru yöne gitmeme yardımcı oldu. html dosyamdaki bir dosyanın yolunu yanlış yazdığımı belirtti: "%" "resim_gallery/views/template/base.html"%} aslında "şablonlar" olduğunda. Bu CLJ-1210 sorununun Clojure'ın en yeni sürümünde olup olmadığını merak ediyorum. –

+0

Bir yama eklenmiş gibi görünüyor, bu yüzden 1.7.0 yapabilir. – pete23

+1

@GustavoMatias Bu ipucu için çok teşekkürler. Açıkçası benim kaynak klasörümde yanlış bir proje yapısı nedeniyle aynı garip bir hata vardı. – tareq