2016-04-26 63 views
1

我在资源文件夹下的java项目中有资源。当我使用下面的方法[2]来加载它正在工作的资源。但是当我在野蛮9.x部署我的战争时,它说找不到file.avsc文件。 它给出类路径为[1];我如何加载jboss war中的资源文件?如何在jboss war中加载资源文件 - wildfly9.xV

[1]

java.io.FileNotFoundException:/content/ratha.war/WEB-INF/lib/core-0.0.1-SNAPSHOT.jar/avro_schemas/file.avsc(没有这样的文件或目录)

[2]

ClassLoader classLoader = getClass().getClassLoader(); 

    ClassLoader classLoader = this.getClass().getClassLoader(); 

    ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); 

    File file = new File(classLoader.getResource("avro_schemas/file.avsc").getFile()); 

回答

1

尝试Class.getResourceAsStream()方法:

this.getClass().getResourceAsStream("avro_schemas/file.avsc"); 

您可能不得不修补一下路径。以下是关于如何构建路径的正式文档:Class.getResourceAsStream

问题将出现在Jboss如何创建ClassLoader结构。您将需要构建路径来匹配类在ClassLoader类路径中的表示方式。此

其他好的描述可以在这里找到:How to read a file from jar in Java? 这里:How can I read a resource file in an unexploded war file deployed in Tomcat?

凡建议你应该有一个前导“/”开始的文件路径。

+0

谢谢你的作品.. – Ratha