2016-02-07 3 views
7

Ich brauche einen Namensraum zwischen meinem Clojure (Garten) und mein ClojureScript (Reagenz) zu teilen.Clojure erfordert keine cljc Datei

Derzeit ist das Projektordner wie folgt aussieht:

src/ 
    clj/ 
    name/ 
     css.clj 
    cljs/ 
    name/ 
     core.cljs 
    cljc/ 
    name/ 
     config.cljc 

Die config.cljc Datei hat den folgenden Namespace: (ns name.config).

Ich habe versucht, diesen Namespace von innen clj/name/css.clj mit einer erfordern.

(ns name.css 
    (:require [name.config :as config])) 

Dies führt jedoch zu einem Kompilierungsfehler von Garden.

Verursacht von: java.io.FileNotFoundException: Name/config__init.class oder name/config.clj konnte im Klassenpfad nicht gefunden werden.

Ich denke, es ist nicht einmal für cljc Dateien überprüfen.

Ich habe "src/cljc" zum :source-paths Vektor in project.clj und :garden :builds aber ich den gleichen Fehler auch nach der Build-Prozesse neu zu starten.

Ich sehe dieses Verhalten auf Clojure 1.7.0 und 1.8.0.

Es kann auch erwähnenswert sein, dass es ohne Probleme in ClojureScript funktioniert (wobei Figwheel den Build behandelt). Ich kann den neuen Namespace ohne Probleme anfordern und verwenden.

Es scheint, als ob ich etwas wirklich einfaches vermissen muss, weil keine der Dokumentation um .cljc Dateien sogar erwähnt fordert sie.

Antwort

5

Überprüfen Sie, ob Sie Clojure 1.7 oder höher in Ihrer project.clj verwenden. Diese Fehlermeldung:

verursacht durch: java.io.FileNotFoundException: Name/config__init.class oder name/config.clj konnte nicht auf Klassenpfad gefunden werden.

zeigt an, dass Sie verwenden Clojure 1,6 oder darunter, da diese Versionen von Clojure nur für .class oder .clj Dateien zu suchen wissen.

+1

'project.clj' hat' org.clojure/clojure' bei '" 1.7.0 "' und wenn ich eine REPL boote, bestätigt es 'Clojure 1.7.0'. Alles andere, was in "project.clj" eingestellt werden muss? –

+1

Ich bekomme das gleiche Problem, wenn ich auch 1.8.0 benutze. –

+0

Welche Version von Leinigen verwenden Sie? Sie könnten einen neueren versuchen, wenn er existiert. –

0

Ich habe diesen gleichen Fehler, wenn ich eine Datei von .clj bewegte in meinem Projekt .cljc. Ich tat lein clean, aber das hatte keine Wirkung. Schließlich habe ich den Modul-Namespace umbenannt und den Fehler behoben.

(Meine Vermutung ist, dass es irgendeine Art von Cache von kompilierten Module war und es wurde Referenzierung ein Modul, das nicht mehr existiert, aber die cljc wurde nicht neu kompiliert, weil ein Modul dieses Namens noch zwischengespeichert wurde.)

Wenn ich das Modul Namespace umbenannt es ohne weitere Änderungen am Code gearbeitet.

Verwandte Themen