如何在Apache Brooklyn中获取资源

时间:2015-09-23 08:32:36

标签: java maven brooklyn

我正在尝试构建自己的实体,它基于VanillaWindowsProcess。在安装Windows机器之后,想法是执行一些文件中的powershell命令。

我尝试了一些我在其他Java项目中使用了很多次来获取资源的东西:

private void runInstallationScript() {
    List<String> lines;
    try {
        lines = FileUtils.readLines(
                new File(TalendWindowsProcessWinRmDriver.class.getResource("/my/path/file.txt").getFile()),
                "utf-8");
        executePsScript(lines);
    } catch (IOException e) {
        LOG.error("Error reading the file: ", e);
    }
}

但我总是得到以下内容:

  

ava.io.FileNotFoundException:文件'文件:/opt/workspace/incubator-brooklyn/usage/dist/target/brooklyn-dist/brooklyn/lib/dropins/myProject-0.0.1-SNAPSHOT.jar!/ my /path/file.txt'不存在

很奇怪,因为该文件位于该路径的jar中。我做了一个测试(没有Apache Brooklyn基础设施)并且它可以工作,但另一方面,它没有。

该项目遵循Maven标准结构,文件本身位于,src / main / resources / my / path / file.txt

有什么问题吗?或者可能有另一种方法来获取该文件?任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

您无法将jar内的资源作为File对象进行访问。您需要使用InputStream(或URL)来访问它。

由于您已使用getResource,因此应更改方法FileUtils.readLines以接受InputStream(或URL)作为输入。

如果您无权访问源代码,则可以编写自己的方法或使用Files.readAllLines for Java&gt; = 7.