Почему мне не хватает DLL? - PullRequest
0 голосов
/ 24 мая 2019

Моя проблема заключается в следующем:

Я запускаю приложение Windows, которое содержит веб-сервер и веб-приложение с некоторой дополнительной логикой.При запуске вручную все ок.Начиная с Java, из моей среды автоматического тестирования я получаю сообщение об ошибке отсутствующей DLL.Эта DLL находится в корне пути установки, C: \ Program Files [Компания] [Имя приложения] [Wretched DLL].Исполняемый файл находится в том же месте.

Для запуска приложения я использую следующий код:

        int ind = strProcessToRun.lastIndexOf("\\"); //what if / is used?
        if (ind == 0) {
            ind = strProcessToRun.lastIndexOf("/");
        }

        String strWorkDir = strProcessToRun.substring(0, ind);
        log.debug("Working dir: " + strWorkDir);

        ProcessBuilder builder = new ProcessBuilder(strProcessToRun);
        builder.directory(new File(strWorkDir));

        process = builder.start();

        inheritIO(process.getInputStream(), System.out);
        inheritIO(process.getErrorStream(), System.err);

        log.debug("Program started: " + strProcessToRun);

Операционная система Win 10 Pro.

Когда я удалил DLLиз приложения было показано то же сообщение об ошибке.(упомянул отсутствующую dll и предложение переустановить приложение.)

strProcessToRun - это исполняемый файл и его путь.Из этого получается рабочий каталог.

По какой причине DLL отсутствует / недоступна для исполняемого файла?Есть что-то, что можно сделать по-другому?

Заранее большое спасибо!

@ edit: я добавил следующий код, но это каким-то образом вообще не позволяет моему приложению запускаться:

Map<String,String> env = builder.environment();
String path = "\"" + strWorkDir + "\"";
String existing = env.get("Path");
env.put("Path", path + ";" + existing);
log.debug("PATH adjusted!");

@ Edit2: установка пути выполнена неправильно.Это было изменено выше, мое приложение запускается.

@ Edit3: Основной исполняемый файл приложения находится в корне установочного каталога.Когда это запускается, запускается другой исполняемый файл.Это находится в subdir.Когда drenched dll копируется в этот подкаталог, я могу запустить приложение из автоматизации тестирования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...