2

这是一个非常简单的问题,但我无法解决,所以我希望你能忍受我。我在 Windows 上运行 IntelliJ,并将它用作 Clojure IDE。我试图通过运行 RT.loadResourceScript 来调用我的 core.clj,但我无法找出我的 core.clj 的正确路径。我是 IntelliJ 的新手,之前曾在 Linux 上与 Leiningen 合作过。

项目在 C:\Users\L\IdeaProjects\LearningClojure 下的 core.clj 和 Driver.java 文件位于 src 文件夹中。

我已经尝试使用“src/core.clj”“core.clj”“src\core.clj”和变体在树上为我的 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 的评论中看到的那样,这里的问题是 IntelliJ IDEA 需要将必要的文件复制到模块编译器输出。这适用于所有文件。

File -> Settings -> Compiler(高亮编译器,不要用+号展开)

在我的 IntelliJ IDEA 中,资源模式显示

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

我认为这是正确的,但是!表示该文件未被复制。对于 .clj 文件,我需要删除 !。对于任何其他类型的文件,您需要使用以下语法添加它:

";*.extension"     
于 2013-01-25T16:48:37.907 回答