所以我正在制作一个小应用程序。
目前,该项目运行良好。我正在通过 IDE 运行它。当尝试将项目作为 jar 运行时,问题就出现了——这就是最终结果。目前,它无法正确加载所需的文件(类和简单的 ASCII 文件)。
我使用的方法基于:
final Enumeration<URL> paths = CLASS_LOADER.getResources("");
其中CLASS_LOADER
是class.getClassLoader()
的实例。
这在不在 jar 里时效果很好。但在 jar 里,它似乎严重失败。例如,在上面的代码中,paths
将为空。
我假设错误是文件都在一个 jar 中 - 准确地说是同一个 jar。
list 文件的类路径目前为空。
<小时/>如果有帮助的话,我有两个任务需要加载文件。
- 我需要创建一个包含以下子类的所有文件的列表 另一个类。
- 我需要加载语言文件列表(所有 它们位于同一目录中)。
如果您需要任何其他信息来帮助调试此问题或提供解决方案 - 请告诉我。感谢您阅读本文!
最佳答案
要使 ClassLoader.getResources() 正常工作,您需要提供相对于 jar 根目录的路径。如果您想搜索 jar,那么 ClassLoader 公共(public) API 将无法帮助您。您必须使用基于 java.util.jar.JarFile 的自定义代码,例如 here .
关于java - 在多个环境中动态加载文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25496389/