4

私は、次のディレクトリ構造を持つLeiningenを使用して小さなClojureプロジェクトに取り組んでいます。

  • 事業
    • src
    • テスト
      • xxx
        • login.clj
    • 資力
      • 公衆
        • css
          • bootstrap.css

テストディレクトリのlogin.cljファイルで、respuces / publi/cssディレクトリのbootstrap.cssファイルを丸呑みしようとしています。

(def css-file "/css/bootstrap.css")
(def css-contents (slurp css-file))

これは、ファイルが見つからないというエラーを返します。

スレッド「メイン」の例外java.io.FileNotFoundException:/css/bootstrap.css(そのようなファイルまたはディレクトリはありません)、コンパイル:(login.clj:10)

質問は簡単ですが、ファイルにアクセスするにはどうすればよいですか?

4

3 に答える 3

3

実際には「リソース」を使用する必要があります-どちらか

  1. (clojure.java.io/resource "relative / path")、ファイルへのURLを返します。

  2. (noir.io/get-resource "relative/path")ファイルを返す、または

  3. (noir.io/slurp-resource "relative / path")これはファイルの内容を返します。

そして心配しないでください-あなたはこの問題に巻き込まれた最初の人ではありません!

于 2014-07-24T08:41:27.343 に答える
2

Slurpは、クラスパスではなく、ファイルシステムからファイルを読み取ります。そこで、そこで何をしようとしているのか、ファイルシステムのルートから/css/bootstrap.cssにあるファイルを読み取ろうとしていますが、エラーメッセージに示されているように、そのファイルは存在しません。

テスト目的でそれを読んでいるだけの場合は、プロジェクトディレクトリからテストを実行していると仮定すると、resources / public / css/bootstrap.cssのような相対パスでそれを丸呑みすることができるはずです。

于 2012-07-02T04:42:45.540 に答える
1

実行時に実際のクラスパスを確認してください。classspathが./resources/publicディレクトリではなく、./resourcesディレクトリを参照している可能性があります。

これを解決するには、代わりに「/public/css/bootstrap.css」を使用してみてください。

于 2012-07-02T03:52:50.690 に答える