【问题标题】:How do I find out what the classpath is in IntelliJ如何找出 IntelliJ 中的类路径
【发布时间】:2013-01-25 15:33:14
【问题描述】:

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

【问题讨论】:

  • 检查this answer
  • 谢谢,但我一定遗漏了一些东西,我正在寻找 IntelliJ 从中获取文件的“基本”目录。我原以为路径“core.clj”会起作用,因为 core.clj 和 Driver.java 都在 src 文件夹中
  • 您需要确保将core.clj复制到模块编译器输出,当不需要加载src/时,CLJ = "core.clj";应该可以工作。
  • 感谢您再次回复,我的资源模式当前确实包含 .clj,因为我正在使用 LaClojure (!?*.java;!?*.form;!?*.class;!?* .groovy;!?*.scala;!?*.flex;!?*.kt;!?*.clj) 我仍然看到同样的问题。有什么想法或我错过了你提出的观点吗?
  • 该模式排除了*.clj文件被复制到输出(类路径),很可能是问题的原因,在?*.clj之前删除!

标签: clojure intellij-idea classpath packages


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

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

    文件->设置->编译器(高亮编译器,不要用+号展开)

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

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

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

    ";*.extension"     
    

    【讨论】:

    • 不应该是“;*.extension”?使用分号而不是逗号。
    猜你喜欢
    • 1970-01-01
    • 2018-10-08
    • 2015-12-24
    • 1970-01-01
    • 1970-01-01
    • 2014-10-20
    • 1970-01-01
    • 2015-11-15
    • 1970-01-01
    相关资源
    最近更新 更多