这是一个非常简单的问题,但我无法解决,所以我希望你能忍受我。我在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项目布局时如何与类路径和目录布局相对应?
答案 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"