如何在jboss war中加载资源文件--wildfly9.xV

时间:2016-04-26 22:52:48

标签: java jboss war wildfly

我在资源文件夹下的java项目中有资源。当我使用以下方式[2]加载它正在工作的资源。但是当我在wildfly 9.x中部署我的战争时,它说无法找到 file.avsc 文件。 它将类路径赋予[1];如何在jboss war中加载资源文件?

[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());

2 个答案:

答案 0 :(得分:1)

尝试... Having said this, would you like me to predict you future?y/n bogus Invalid answer, Please try again.wrong Invalid answer, Please try again.yep You've been warned. 方法:

a = np.zeros((6,2))
    array([[ 0.,  0.],
           [ 0.,  0.],
           [ 0.,  0.],
           [ 0.,  0.],
           [ 0.,  0.],
           [ 0.,  0.]])
b = np.ones((6,1))
    array([[ 1.],
           [ 1.],
           [ 1.],
           [ 1.],
           [ 1.],
           [ 1.]])

np.hstack((a,b))
array([[ 0.,  0.,  1.],
       [ 0.,  0.,  1.],
       [ 0.,  0.,  1.],
       [ 0.,  0.,  1.],
       [ 0.,  0.,  1.],
       [ 0.,  0.,  1.]])

你可能不得不修改一下这条路。以下是关于如何构建路径的正式文档: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?

它表明你应该有一个领先的" /"开始文件的路径。

答案 1 :(得分:0)

JBoss和Tomcat上都无法接受已接受的答案。由于类加载器的层次结构,最安全的选择似乎是使用当前线程的类加载器,如下所述:

  

https://coderanch.com/t/89900/application-servers/reading-properties-file

代码中的样子:

 ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
 URL resource = classLoader.getResource("avro_schemas" + File.separator + "file.avsc");
 File file = new File(resource.getFile());