如何在IntelliJ IDEA中的应用程序运行配置文件中向目录路径添加目录?


206

我正在尝试将目录添加到应用程序运行配置文件的类路径中

如果在VM设置中使用-cp x:target / classes覆盖,则会出现以下错误:

java.lang.NoClassDefFoundError: com/intellij/rt/execution/application/AppMain

关于如何为我的项目的类路径添加目录的任何想法吗?


1
我不清楚您要在哪里添加。从IJ命令行?还是在项目属性中?
Heiko Rupp

Answers:


270

在Intellij 13中,看起来又有些不同。以下是Intellij 13的说明:

  1. 单击项目视图,或通过单击窗口左边框上的“ 1:项目”按钮或通过按Alt + 1取消隐藏
  2. 找到您的项目或子模块,然后单击以突出显示它,然后按F4,或右键单击并选择“打开模块设置”(在IntelliJ 14上,它变成F12)
  3. 单击依赖项选项卡
  4. 单击右侧的“ +”按钮,然后选择“ Jars或目录...”。
  5. 找到您的路径,然后单击确定
  6. 在“选择所选文件的类别”对话框中,选择Classes(即使它是属性),再按“确定”,然后再次单击“确定”
  7. 现在,您可以运行您的应用程序,它将在类路径中具有选定的路径

2
因此,您将如何创建运行带有两个不同目录的配置,而这些目录必须在一个目录中唯一存在,而在另一个目录中则不能唯一。在eclipse中,您可以向启动配置添加/删除任何内容。IntelliJ不支持吗?
Καrτhικ

9
很明显,您可以更改运行配置的类路径, 从而更改模块的类路径。但是确切的问题是“如何在应用程序运行配置文件中将目录添加到类路径”。因此,真正的是由uaaquarius提供的
Pavel Vyazankin

谢谢 !经过多年的探索,这解决了我的问题!
JonasCz-恢复莫妮卡

1
步骤6不适合我。我在intellij 14上。我在.jar所在的文件夹中有一个lib。选择文件夹或jar只会将路径解析为intellij。仍然不起作用
Takeru 2016年

@Takeru你知道了吗?
rosshamish

91

看来IntelliJ 11更改了方法,检查的答案不再对我有用。如果有人通过搜索引擎到达这里,这就是我在IntelliJ 11中解决的方法:

  1. 转到项目结构,单击模块,然后单击您的模块
  2. 选择“依赖项”标签
  3. 点击右侧的“ +”按钮,然后选择“ Jars or directory ...”
  4. 添加您想要的目录(注意您可以多选),然后单击“确定”。
  5. 在出现的对话框中,选择“类”,而不是“ jar目录”
  6. 确保在运行目标中使用该模块

请注意,步骤5似乎是关键的区别。如果选择“ jar目录”,它将在IDE中看起来完全一样,但在运行时不会包含该路径。事实似乎无法确定您此前是否选择了“类”或“ jar目录”。


4
非常感谢您发布此信息。你刚刚救了我一个小时左右。
约翰·姜

我和IJ11一样有同样的问题,很高兴这次能找到答案。
萨尔

完善。IJ12的过程相同。尝试解决“ java.lang.ClassNotFoundException:com / microsoft / jdbc / sqlserver / SQLServerDriver”时跑遍这篇文章。这解决了连接问题。谢谢
jkmurphy1 2013年

6
我不明白第5步:(对话只是不上来了。
查尔斯·伍德

1
@CharlesWood:当我想选择两个文件夹,其中一个包含子文件夹时。我必须通过文件夹名称旁边的小箭头符号扩展包含子文件夹的文件夹,以便显示对话框。否则,对话框将被跳过。
Timo Reimann

35

您可以尝试使用Java应用程序启动器的-Xbootclasspath / a:path选项。通过描述,它指定“目录,JAR归档文件和ZIP归档文件的冒号分隔的路径,以追加到默认引导程序类路径。”


2
有关-Xbootclasspath的工作方式的一些文档:docs.oracle.com/cd/E15289_01/doc.40/e15062/optionx.htm#i1018570
Lambart,2015年

3
这是一个很好的答案,因为它不需要您更改项目配置。实际上,我认为它最能回答问题。
耐嚼的

1
不幸的是,这对我不起作用,因为这导致从该类路径加载的所有类都由引导类加载器加载,这破坏了假定Xyz.class.getClassLoader()不为null的代码。
新泽西,2017年

@uaaquarius,为什么无法直接编辑命令行字符串?这真令人沮丧。
Pacerier's

@uaaquarius,如果我mysql-connector-java-5.1.45/mysql-connector-java-5.1.45-bin.jarstackoverflow.com/a/16742141/632951中使用另一种方法添加为依赖项,为什么 会起作用,但是使用-Xbootclasspath/a却没有呢?
Pacerier '17

19

我正在模块依赖性选项卡(在项目结构对话框中)中使用Idea 8。添加一个“模块库”。您可以在此处选择要添加的Jar目录。然后,请确保运行配置文件在运行时正在使用正确模块的类路径和JDK(位于运行配置对话框中)。




0

您无需指定classes文件夹。Intellij应该能够加载它。如果“项目编译器输出”为空,则会出现此错误。

只需确保设置了以下值: 项目设置->项目->项目编译器输出projectDir / out文件夹

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.