我如何找出IntelliJ中的类路径

时间:2013-01-25 15:33:15

标签: clojure intellij-idea classpath packages

这是一个非常简单的问题,但我无法解决,所以我希望你能忍受我。我在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"和#34; LearningClojure"以及#34; LearningClojure"我的CLJ变量。

我的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项目布局时如何与类路径和目录布局相对应?

2 个答案:

答案 0 :(得分:3)

默认情况下,源文件不会复制到输出(类路径),安装了LaClojure插件*.clj被视为源。

您的用例如果非常具体并且要求源文件出现在类路径中,那么您必须调整Settings | Compiler | Resource Patterns要包含(或不排除)*.clj个文件。

您也不需要在路径前添加src/

答案 1 :(得分:0)

正如您在CrazyCoder的评论中所看到的,这里的问题是IntelliJ IDEA需要将必要的文件复制到模块编译器输出。这适用于所有文件。

档案 - >设置 - >编译器(突出显示编译器,不要用+扩展)

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

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

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

";*.extension"