我在 Eclipse(实际上是 IBM RAD 7)中有一个在 WebSphere 7 上运行的 Java EE 5 项目。
工作区项目布局如下:
webapp <-- produces a WAR file
webappEAR <-- produces the EAR file
webappEJB <-- holds the Service and DAO classes
webappJPA <-- holds the domain/entity classes
webappTests <-- holds the JUnit tests
在我的一个服务类中(在 webappEJB 项目中)我需要加载一个文本文件作为资源。
我将我的文本文件放在文件夹中:
webappEAR/emailTemplates/myEmailTemplate.txt
因此它出现在 EAR 文件中:
webappEAR.EAR
/emailTemplates/myEmailTemplate.txt
在我的服务类中,这是我加载它的方式:
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
InputStream input = classLoader.getResourceAsStream("emailTemplates/myEmailTemplate.txt");
BufferedReader br = new BufferedReader(new InputStreamReader(input));
/* and so on */
问题是 input
总是空的——它找不到资源。
我尝试了一个前导斜线 ("/emailTemplates/myEmailTemplate.txt"
),但这也不起作用。
知道我做错了什么吗?或者更好的方法?
谢谢!
罗布
最佳答案
EAR 文件层次结构/内容不在您的类路径中;根据配置,打包在 EAR 文件中的 Jar 文件可能位于模块的类路径中。
因此,将资源打包到包含“服务类”的模块的类路径中的任何 JAR 文件中。
为资源创建一个新的 JAR 并非没有道理,特别是如果您将独立更新它们。
关于java - 如何从我的 EAR 文件中的类加载文本文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12219347/