我正在开发在FUSE服务器上运行的camel应用程序,我试图从我项目的资源文件夹中读取xsd文件,如下所示。但问题是我无法在资源中读取文件的确切路径或文件内容。
我试着阅读" Employee.xsd"文件内部进程如下面的代码,但没有成功。
File file = new File(classLoader.getResource("Employee.xsd").getFile());
String fileContent=FileUtils.readFileToString(file);// Using Commons-IO
如果给出java.io.FileNotFoundException: File '\Employee.xsd' does not exist
例外。是否有人能够解决这类问题。
答案 0 :(得分:2)
您需要从类路径加载文件。
您可以搜索stackoverflow或internet如何从类路径加载资源/文件。
如果您有CamelContext
的访问权限,则可以使用其ClassResolver
来加载资源。
您可以在javadoc上查看更多相关信息:http://static.javadoc.io/org.apache.camel/camel-core/2.18.1/org/apache/camel/spi/ClassResolver.html
答案 1 :(得分:1)
适用于下一个开始骑骆驼并碰到这个骆驼的人
如果您是在骆驼上下文中进行操作,则似乎无法以通常的方式访问类路径资源(因此,请忽略Claus答案的第一部分)。相反,您需要做的就是像Claus所建议的那样掌握CamelContext并使用它。这是处理器的处理方法中的外观:
public void process(Exchange exchange) throws IOException {
String getMockResponsePathString = exchange.getContext()
.getClassResolver()
.loadResourceAsURL({$MOCK_RESOURCE_NAME})
.getPath();
Path mockResponsePath = Paths.get(mockResponsePathString);
byte[] mockResponseBytes = Files.readAllBytes(mockResponsePath);
String mockResponseString = new String(mockResponseBytes);
exchange.getIn().setBody(mockResponseString);
}