从wildfly+;JAVA
我有一个简单的jsp应用程序。 我正在尝试加载一个xml文件,它位于src/xml文件夹中。我正在使用下面的代码,但获取FileNotFound异常。请让我知道如何解决这个问题从wildfly+;JAVA,java,jsp,java-8,jboss,wildfly,Java,Jsp,Java 8,Jboss,Wildfly,我有一个简单的jsp应用程序。 我正在尝试加载一个xml文件,它位于src/xml文件夹中。我正在使用下面的代码,但获取FileNotFound异常。请让我知道如何解决这个问题 Public static void load() { Document doc = parseDoc(Thread.currentThread().getContextClassLoader().getResource("/xml/test.xml").getFile()) } 这将引发FileN
Public static void load() {
Document doc = parseDoc(Thread.currentThread().getContextClassLoader().getResource("/xml/test.xml").getFile())
}
这将引发FileNotFound异常,因为路径显示为/D:/Wildfly/bin/content/aap.war/web-inf/classes/xml/test.xml
尝试了几种不同的方法,但都不起作用。请帮助我一般注意事项:
请写public
,不要写public
。“src”不是一个很好的文件夹来加载某些内容。“src”通常包含您的源代码(也称为*.java文件)——在文件编译并放入服务器后,您无法访问这些源代码
我的建议是,将XML文件放入jar文件中。因此,请压缩xml文件夹并将其重命名为例如“xml.jar”。我假设有一个文件夹xml/test.xml。这个jar文件是作为.ear或.war文件的一部分添加到类路径的。部署后,您可以通过以下方式访问它:
Thread.currentThread().getContextClassLoader().getResourceAsStream(“xml/text.xml”)代码>
也不要直接读取,而是检查是否为空:
InputStream stream = Thread.currentThread().getContextClassLoader().getResourceAsStream("xml/text.xml);
if (stream == null) {
throw new IllegalStateException("Resource 'xml/text.xml' not found on classpath");
}
//continue
一般说明:
请写public
,不要写public
。“src”不是一个很好的文件夹来加载某些内容。“src”通常包含您的源代码(也称为*.java文件)——在文件编译并放入服务器后,您无法访问这些源代码
我的建议是,将XML文件放入jar文件中。因此,请压缩xml文件夹并将其重命名为例如“xml.jar”。我假设有一个文件夹xml/test.xml。这个jar文件是作为.ear或.war文件的一部分添加到类路径的。部署后,您可以通过以下方式访问它:
Thread.currentThread().getContextClassLoader().getResourceAsStream(“xml/text.xml”)代码>
也不要直接读取,而是检查是否为空:
InputStream stream = Thread.currentThread().getContextClassLoader().getResourceAsStream("xml/text.xml);
if (stream == null) {
throw new IllegalStateException("Resource 'xml/text.xml' not found on classpath");
}
//continue
getResource(…)
返回一个URL
。无法保证这是默认文件系统中的文件。最值得注意的是,当代码部署在jar文件中时,情况并非如此。检查是否有一个版本的parseDoc
接受URL
或InputStream
(您可以在URL
上调用openStream()
,或者首先使用getresourceastream(…)
。getResource(…)
返回一个URL
。无法保证这是默认文件系统中的文件。最值得注意的是,当代码部署在jar文件中时,它不会出现。请检查是否有一个版本的parseDoc
接受URL
或InputStream
(您可以调用openStream()
上的URL
或首先使用getResourceAsStream(…)
。