Как получить ресурс в Apache Brooklyn

Я пытаюсь создать свою собственную сущность, основанную на VanillaWindowsProcess. Идея состоит в том, чтобы после установки Windows Machine выполнить некоторые команды 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: File 'file:/opt/workspace/incubator-brooklyn/usage/dist/target/brooklyn-dist/brooklyn/lib/dropins/myProject-0.0.1-SNAPSHOT.jar!/my/path/ файл.txt не существует

Странно, потому что файл лежит в банке именно по этому пути. Я сделал тест (без инфраструктуры Apache Brooklyn), и он работает, но, наоборот, это не так.

Проект следует стандартной структуре Maven, а сам файл находится в папке src/main/resources/my/path/file.txt.

Что-то не так? Или, может быть, есть другой способ получить этот файл? Любая помощь будет оценена по достоинству.


person Iker Aguayo    schedule 23.09.2015    source источник


Ответы (1)


Вы не можете получить доступ к ресурсу внутри jar как к объекту File. Вам нужно использовать InputStream (или URL) для доступа к нему.

Поскольку вы уже используете getResource, вам следует изменить метод FileUtils.readLines, чтобы он принимал InputStream (или URL) в качестве входных данных.

Если у вас нет доступа к исходному коду, вы можете написать свой собственный метод или использовать Files.readAllLines для Java >= 7.

person Tunaki    schedule 23.09.2015