是否在IntelliJ IDEA中抽象出了CLASSPATH?

时间:2014-09-11 15:57:33

标签: java intellij-idea

以下是有关在IntelliJ中设置CLASSPATH的一些问题:

大部分答案都涉及更改项目设置中的设置 - >模块 - >来源或 - >依赖关系页面。但是“CLASSPATH”这个词实际上并不在那些页面上。

例如, - >依赖页面允许显式设置一个位置来查找其他.class文件或.jar文件。但任何地方都没有“CLASSPATH”。

另外,在 - >中设置位置源页面似乎表明了目录树的内容 .class根应该是这样的,但实际位置实际上是在项目设置中设置的 - >项目 - >项目编译器输出字段,同样没有“CLASSPATH”一词。

JetBrains是否因为某些原因试图隐藏这个词(例如,它意味着是一个多语言的IDE)?是否有一些地方可以显式设置CLASSPATH而不是env变量?

2 个答案:

答案 0 :(得分:2)

正如您所说,CLASSPATH是一个环境变量,因此会影响引用该变量的所有应用程序:

  

类搜索路径(更常见的是较短的名称,"类   在调用a时,可以使用-classpath选项设置path")   JDK工具(首选方法)或通过设置CLASSPATH   环境变量。 -classpath选项是首选,因为您   可以为每个应用程序单独设置它而不影响其他应用   应用程序,没有其他应用程序修改其值。

来源:http://docs.oracle.com/javase/7/docs/technotes/tools/windows/classpath.html

运行应用程序时也可以使用-classpath选项,这不会影响系统上运行的其他Java应用程序。

IntelliJ将构建您的类路径以包含您的应用程序和任何依赖项(无论是文件夹还是Jars等),并在运行应用程序时将其传递给JVM。 IntelliJ GUI确实引用了您的显式"依赖关系"并让你编辑它们。您的应用程序构建路径需要包含这些依赖项和所有应用程序代码,因此隐式包含它是有意义的。

如果您要使用大量库,您的类路径可能会变得非常长 - 必须手动维护类搜索路径中的位置列表会非常耗时并且(人为)容易出错 - 文件夹名称上的拼写错误并且它不会编译/运行 - 因此它为您承担任务。

您可能会发现您的IDE代表您向JVM传递了许多其他参数(堆大小,GC,JMX扩展等) - 但这是IDE的用途的一部分。当然,我们可以从命令行调用版本控制等内容,但为什么放弃帮助呢?你的IDE并没有试图隐藏"任何来自你的东西,它(希望)为许多常见的开发任务提供了更直观的界面。

答案 1 :(得分:0)

CLASSPATH恰好是Java自动使用的环境变量的名称。

通常认为使用-cp参数明确设置类路径而不是与CLASSPATH冲突作斗争是一个更好的选择,因为它在整个流程范围内。

它没有试图隐藏"它一点都没有;没有理由使用它。