我在资源文件夹下的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());
答案 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());