Java 系统找不到指定的路径

Java 系统找不到指定的路径,java,eclipse,file,maven,Java,Eclipse,File,Maven,我正在从一个(maven)生成的文件中读取信息,该文件位于target/[projectname]/WEB-INF/classes/。Eclipse没有向我显示路径,但是,我无法在WEB-INF中创建名为classes的新文件夹(因为已有一个文件夹) 我可以通过命令行找到文件夹和文件,但是,我无法为该文件创建FileInputStream 但是,我可以访问位于target中的其他文件,例如,target/maven archiver/pom.properties,这些文件在每次构建过程中都已生成

我正在从一个(maven)生成的文件中读取信息,该文件位于
target/[projectname]/WEB-INF/classes/
。Eclipse没有向我显示路径,但是,我无法在
WEB-INF
中创建名为
classes
的新文件夹(因为已有一个文件夹)

我可以通过命令行找到文件夹和文件,但是,我无法为该文件创建
FileInputStream

但是,我可以访问位于
target
中的其他文件,例如,
target/maven archiver/pom.properties
,这些文件在每次构建过程中都已生成。唯一的区别是我可以在Eclipse中看到该文件

该项目是一个GWT项目,由maven构建。我看不出Java找不到路径的任何原因

我正在访问的文件是
version.properties
。我可以在资源管理器中看到它(项目名称为黑色):

我试图通过

private static final String PATH = "target/[projectname]/WEB_INF/classes/version.properties";

public static String getVersion() {
    String version;
    Properties prop = new Properties();
    File resource = new File(PATH);
    try {
        prop.load(new FileInputStream(resource));
        version = prop.getProperty("build.time");
    } catch (IOException e) {
        e.printStackTrace();
        version = "01.01.2016 00:00";
    }
    return version;
}
我得到的例外是

java.io.FileNotFoundException: target\[projectname]\WEB_INF\classes\version.properties (Das System kann den angegebenen Pfad nicht finden)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:138)
at [projectname].utils.VersionUtils.getBuildTime(VersionUtils.java:31)
[...]
java.io.FileNotFoundException:target\[projectname]\WEB\u INF\classes\version.properties(Das系统kann den angegebenen Pfad nicht finden)
在java.io.FileInputStream.open(本机方法)
位于java.io.FileInputStream。(FileInputStream.java:138)
位于[projectname].utils.VersionUtils.getBuildTime(VersionUtils.java:31)
[...]

你完全错了

version.properties
是位于
src/main/resources
中的应用程序资源。当您完成最后一场战争时,此文件将位于应用程序的类路径上。这是因为Maven将把这个资源放在WAR的文件夹
WEB-INF/classes
中。您不能使用路径
target/..
src/main/..
访问此文件。这是Eclipse/Maven考虑的问题。一旦你有了最后一场战争,
target
就不再存在了

其次,您不能作为
文件
对象访问资源。您必须获得资源的
InputStream

结合所有这些,您应该具备:

prop.load(VersionUtils.class.getResourceAsStream("/version.properties"));‌​

给定给
getResourceAsStream
的路径是相对于当前类位置的路径,或者是相对于类路径的绝对路径。在本例中,资源位于类路径的根目录,因此我们只使用
“/version.properties”

为什么需要从代码访问目标目录?@Ferrybig,因为文件是自动生成的,因此仅在此处生成的输出可用(包含用
指定的maven属性)${propertyName}
)。@LordAnomander使用getClass().getResource(“\version.properties”)可能会更成功,因为您的代码似乎被编译成某种容器,但我不确定format@user2004685-您认为路径
src/main/webapp/WEB-INF/classes/version.properties
在生产环境中运行时有效吗?;-)@user2004685-
ClassPathResource(“version.properties”)如果
version.properties
与执行
new ClassPathResource()
的类位于同一个包中,则使用
/version.properties
(如果它属于rrot)。但是
src/main/webapp
不是类路径的一部分。