在EAR包装中找不到文件

时间:2012-02-15 21:41:48

标签: ejb classpath ear

在我的.ear里面

-META-INF
-lib
-ejb-shared.jar
-ejb.jar
    -com/ejb/... (classes)
    -fileXml.xml (file I'm trying to access)
-web.war

一些描述:

  • “ejbshared”包含一些ejbs和JPA实体
  • “ejb”包含一些ejbs和JPA实体并使用“ejb-shared”项目

问题是我无法访问fileXml.xml。在EJB bean(ejb.jar)中,我已经完成了:

File f = new File("fileXml.xml");
System.out.println(f.exists()); // returns false!

我不知道为什么,但似乎fileXml.xml不在类路径中,虽然它出现在.ear中,或者我可能以错误的方式做事!

1 个答案:

答案 0 :(得分:2)

使用new File("fileXml.xml")将引用应用程序服务器JVM的当前工作目录中的文件,而不是相对于您的特定应用程序。尝试使用:

URL url = getClass().getResource("/fileXml.xml");
boolean exists = url != null;
System.out.println(exists);
InputStream input = url.openStream();
// ... read and close input stream