2

これは非常に単純な質問ですが、私はそれを解決することができないので、あなたが私に耐えてくれることを願っています。私はWindowsでIntelliJを実行しており、ClojureIDEとして使用しています。RT.loadResourceScriptを実行してcore.cljを呼び出そうとしていますが、core.cljの正しいパスを特定できません。私はIntelliJを初めて使用し、これまでLinuxでLeiningenを使用していました。

プロジェクトはC:\ Users \ L \ IdeaProjects \ LearningClojureの下にあります。core.cljファイルとDriver.javaファイルは、srcフォルダーにあります。

CLJ変数には、「src / core.clj」、「core.clj」、「src \ core.clj」、およびツリーの上位にある「LearningClojure」までのバリエーションを使用してみました。

私のDriver.javaファイルは次のとおりです

import clojure.lang.RT;
public class Driver
{
private static final String CLJ = "src/core.clj";
public static void main( String[] args)
{
    try
    {
        RT.loadResourceScript(CLJ);
        RT.var("learning", "main").invoke(args);
    }
    catch(Exception E)
    {
        E.printStackTrace();
    }
    finally
    {
        System.out.println("End of Execution");
    }
}

}

出力は戻ります

End of Execution
java.io.FileNotFoundException: Could not locate Clojure resource on classpath: src/core.clj
at clojure.lang.RT.loadResourceScript(RT.java:366)
at clojure.lang.RT.loadResourceScript(RT.java:346)
at clojure.lang.RT.loadResourceScript(RT.java:338)
at Driver.main(Driver.java:16)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)

Process finished with exit code 0

やや関連性のあるメモで、Javaパッケージの適切な説明へのリンクと、IDEプロジェクトレイアウトを処理するときにそれらがクラスパスとディレクトリレイアウトにどのように対応するかについてのリンクはありますか?

4

2 に答える 2

3

デフォルトでは、ソースファイルは出力(クラスパス)にコピーされず、LaClojureプラグインがインストールされ*.cljているとソースと見なされます。

非常に具体的で、ソースファイルをクラスパスに表示する必要がある場合のユースケース。したがって、Settings|を調整する必要があります。Compiler| Resource Patternsファイルを含める(または除外しない)*.clj

また、パスの前に。を付ける必要はありませんsrc/

于 2013-01-25T16:46:57.157 に答える
0

CrazyCoderからのコメントでわかるように、ここでの問題は、IntelliJIDEAが必要なファイルをモジュールコンパイラ出力にコピーする必要があることです。これはすべてのファイルに適用されます。

[ファイル]->[設定]->[コンパイラ](コンパイラを強調表示し、+で展開しないでください)

私のIntelliJIDEAでは、リソースパターンが示していました

!?*.java;!?*.form;!?*.class;!?*.groovy;!?*.scala;!?*.flex;!?*.kt;!?*.clj 

これは正しいと思いましたが、!ファイルがコピーされないことを意味します。.cljファイルの場合、!を削除する必要がありました。その他の種類のファイルの場合は、次の構文を使用してファイルを追加する必要があります。

";*.extension"     
于 2013-01-25T16:48:37.907 に答える