Java 如何将外部文件夹添加到类路径?
因此,我有以下文件夹结构: 项目 解放党 正在从该文件夹运行jar 要加载的属性文件在此文件夹中 我试图通过X.class.getClassLoader.getResourceproperties/fileName加载属性文件。此方法在eclipse中工作,但当我使用maven构建jar时,它无法找到文件,从而导致出现“未找到文件”异常 我怀疑该文件夹不在类路径中,因为如果运行getClassLoader.getResources,属性文件夹将永远不会显示。我尝试了前面问题中关于stackoverflow的所有建议,但到目前为止没有一个有效Java 如何将外部文件夹添加到类路径?,java,maven,Java,Maven,因此,我有以下文件夹结构: 项目 解放党 正在从该文件夹运行jar 要加载的属性文件在此文件夹中 我试图通过X.class.getClassLoader.getResourceproperties/fileName加载属性文件。此方法在eclipse中工作,但当我使用maven构建jar时,它无法找到文件,从而导致出现“未找到文件”异常 我怀疑该文件夹不在类路径中,因为如果运行getClassLoader.getResources,属性文件夹将永远不会显示。我尝试了前面问题中关于stackove
我还尝试运行java-cp和-classpath,但仍然失败。在使用Maven时,默认情况下,*.properties和任何其他不可编译的文件必须位于src/main/resources文件夹中才能使用 此外,我建议您使用Thread.currentThread.getContextClassLoader来获取适当的类加载器,以便加载资源 无论如何,如果您想在classpath中拥有自定义文件夹,我建议您在pom.xml中添加一个资源,如下所示:
<project>
...
<build>
...
<resources>
<resource>
<!-- The folder you want to be a resource (from project root folder), like: project/properties -->
<directory>properties</directory>
<!-- Filtering if Maven should post-process text files to find and replace ${key} params: in most cases, leave it false -->
<filtering>false</filtering>
</resource>
</resources>
</build>
</project>
当我尝试您建议的方法时,getClassLoader.getResources会找到一个URL,但当它被传递到FileInputStream构造函数时,我会得到一个file not found异常。我希望我可以使用Thread.currentThread.getContextClassLoader,但是我被遗留代码困住了……我想你的类加载器没有看到文件。没有办法改变类加载器吗?它可以帮你解决这个问题。。。无论如何,我会花一些时间检查一个解决方法。类加载器永远不会看到文件,因为无论我做什么,它都不在类路径上。我希望我能改变类加载器,但我不能。我做了一项工作,不再使用类加载器,所以它现在是固定的。谢谢你的帮助,没必要浪费你的时间。