2012-02-15 44 views
1

里面我的.ear文件在EAR包装没有发现

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

一些介绍:

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

问题是我无法访问fileXml.xml。中的EJB豆(中ejb.jar)我做:

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

我不知道为什么,但似乎fileXml.xml是不是在classpath中,althougth它存在于的.ear,或者我正在以错误的方式做事!

回答

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 
+0

如何获取该文件的文件路径?我使用一个需要它的库。谢谢 – joaosavio 2012-02-16 12:30:12

+0

JAR文件的文件路径?没有可移植的方式来做到这一点。您可以尝试检查URL的协议并提取内部文件URL,然后将其转换为URI,然后将其转换为文件。或者,您可以检查url.openConnection是否是JarURLConnection的实例,然后使用conn.getJarFile()。getName()。尽管如此,所有这些都无法保证。 – 2012-02-16 13:51:13