无法在 intellij idea 类路径中找到属性文件

Posted

技术标签:

【中文标题】无法在 intellij idea 类路径中找到属性文件【英文标题】:unable to find properties file in intellij idea classpath 【发布时间】:2014-03-26 19:48:31 【问题描述】:

我过去 2 个小时只是为了在我的 IntelliJ IDEA 类路径中添加一个属性文件。我是一个 Eclipse 用户,发现我无法在 IDEA 中做到这一点很尴尬。我的 IntelliJ IDEA 项目中有一个 .properties 文件,它已添加到类路径中,但在运行时我仍然收到文件不存在的异常。

我已经关注了这个问题Add a properties file to IntelliJ's classpath的所有答案

我做了以下事情:-

1) 转到项目结构。 选择您的模块。 在右侧的树中找到文件夹并选择它。 单击该树上方的 Sources 按钮(带有蓝色文件夹),使该文件夹成为源文件夹。

2)我检查了 settings->compiler->resource patterns 有 ?*.properties 的条目

3) 我在 pom.xml 中添加了以下标签

<build>
    <resources>
        <resource>
            <directory>src/main/resources</directory>
        </resource>
    </resources>
</build>

有人可以帮我吗?

进一步更新。这是一个 Maven Web 应用程序项目。我正在尝试访问我的 servlet 中的 .properties 文件。我的 servlet 位于 src/main/java/some_package 中,我的 .properties 文件位于 src/main/resources/some_package 中。

try 

        Properties prop = new Properties();
        InputStream input = null;

        try 

            input = new FileInputStream("package\\myProperty.properties");

            // load a properties file
            prop.load(input);

            // get the property value and print it out
            System.out.println("reading the property file " );
            System.out.println("prop1 =" + prop.getProperty("prop1"));
            System.out.println("prop2 = " + prop.getProperty("prop2"));


         catch (IOException ex) 
            ex.printStackTrace();
         finally 
            if (input != null) 
                try 
                    input.close();
                 catch (IOException e) 
                    e.printStackTrace();
                
            
        

【问题讨论】:

有人可以在这里帮忙吗?这不应该这么难:( 您能否提供更多有关该错误的信息以及如何在运行时使用您的properties 文件。我的意思是一些代码示例、配置和异常堆栈跟踪。 @EugeneEvdokimov - 我添加了更多细节。请检查。 如果你使用Maven构建项目,结果不应该依赖于你工作的IDE,无论是Eclipse还是IDEA。关于 SO 的问题有很多很好的答案:***.com/a/2308388/546117、***.com/a/12523396/546117、***.com/a/18508032/546117。希望他们会有所帮助。 感谢@EugeneEvdokimov,但问题是我的代码没有直接加载这个属性文件。我正在调用一些第三方 jar,而后者又试图加载此属性文件。所以我不能真正尝试改变文件的加载方式。我唯一需要确定的是它应该在类路径中。目前我已经将它添加到tomcat的lib文件夹中,但我需要一个永久的解决方案来解决这个问题。 【参考方案1】:

通常,将正确的目录标记为源目录确实可以解决问题,但我发现还有另一个重要的细节。您需要确保您的工作目录(可以在运行配置中找到)设置正确。在我的项目中,由于某种原因,它被设置为错误的目录,并且由于 Java 尝试在工作目录中查找 *.properties 文件(除非您在代码中指定绝对路径),所以我的属性中的 client.properties 不是没有找到 - 它只是不存在于“错误”的工作目录中。

附:我是一个经验不足的初级开发人员,这是我在这里的第一个答案,所以我可能没有完美和/或正确地描述所有内容,但我花了 2 多个小时试图弄清楚为什么我的属性文件没有加载,所以我希望这对处于同样困境的人有所帮助。快乐编码:)

【讨论】:

【参考方案2】:

我发现您在查找文件名时不应该提及 .properties IF 文件是 abc.properties 然后只查找 abc 而不是 abc.properties

【讨论】:

以上是关于无法在 intellij idea 类路径中找到属性文件的主要内容,如果未能解决你的问题,请参考以下文章

idea怎么将库添加到类路径

IntelliJ IDEA2017 修改缓存文件的路径

intellij idea8.1.2中找到实现一个类或者接口子类的快捷键

intelliJ IDEA 中快速定位当前文件路径

idea运行按钮是灰色无法点击

无法在 IntelliJ IDEA 中生成 JPA Hibernate 元模型类