Java 使用Intellij IDEA时未找到文件

Java 使用Intellij IDEA时未找到文件,java,maven,intellij-idea,Java,Maven,Intellij Idea,我在src/main/app文件夹下有一个名为test mule flow.xml的文件,我添加了一个单元测试: MuleFlowTest extends FunctionalTestCase @Override public String getConfigResources() { return "src/main/app/test-mule-flow.xml"; } @Test public void test...... 实际上,当我在Eclipse(Mule Studio)

我在
src/main/app
文件夹下有一个名为
test mule flow.xml
的文件,我添加了一个单元测试:

MuleFlowTest extends FunctionalTestCase
@Override
public String getConfigResources() {
    return "src/main/app/test-mule-flow.xml";
}

@Test
public void test......
实际上,当我在Eclipse(Mule Studio)和maven build中执行这些测试时,这些测试是正确执行的,但不幸的是,这些测试在Intellij IDEA版本12中失败了

我假设这是由
类加载器
造成的,在IDEA中,源文件存放在
目标/类
文件夹中,测试类存放在
目标/测试类
中,这可能是原因,但我如何配置它呢?以maven的方式更好,我不想在idea中手动执行一些移动配置


谢谢。

看起来您正在使用相对文件路径加载文件。因此,实际结果将取决于执行测试的JVM的启动目录(它是“当前”目录)

这通常是个坏主意。如果文件应该与应用程序捆绑在一起,则将其存储为src/main/resources,并使用类加载器加载:

InputStream in = MuleFlowTest.class.getResourceAsStream("/test-mule-flow.xml"));
如果它是一个仅由您的测试使用的文件,请将其存储在src/test/resources中,并使用类加载器加载它(同上)


如果确实需要将其作为文件加载,请确保当前目录始终是正确的,或者传递一个系统属性,告诉代码应该使用哪个基本目录来创建绝对路径。

您指定了一个相对路径,但没有提供从该位置实际读取文件的详细信息

如果它是从类路径读取的,您应该确保包含该文件。对于Maven,有一个惯例,将资源放入
src\main\resources
src\test\resources
。支持Maven的IDE通常会自动将这些位置添加到类路径中。如果由于某种原因,无法将文件保存在类路径中包含的
resources
或其他位置,则可以手动为IDEA中的项目配置源目录


如果文件是从文件系统读取的,您应该检查IDEA中相应的运行/调试配置中设置为工作目录的内容。

Maven使用以下4个文件夹作为其类路径:

  • src/main/java-目标/类中的输出
  • src/main/resources-目标/类中的输出
  • src/test/java-目标/测试类中的输出
  • src/test/resources-目标/测试类中的输出
如果您想使用任何其他文件夹进行测试(并且您有充分的理由),那么您应该为maven resource plugin明确指定它,如中所述


另外,您应该不要使用测试中src文件夹中的文件,而是使用目标文件(您也不应该指定“target”,只使用文件名),它已经在JVM的类路径中。

谢谢,但是关于目标,intellij 12仍然无法在目标文件夹中找到由apache cxf codegen插件生成的类。啊,我在文件名开头缺少“/”。。。这个答案让我大吃一惊。非常感谢。ftw的具体例子。(这就是我在离开太久之后回到Java所得到的。)