Попытки Java-программы
В Windows есть программа, которая вызывает двоичные файлы GDAL.Я правильно установил GDAL, PYTHON и т. Д., Чтобы дать мне беспроблемный опыт.Когда я использую
ProcessBuilder pb = new ProcessBuilder("gdal_translate","-ot","Float32","-of","ENVI","b","1","abc.tif","def.bin");
, я получаю необходимый вывод.Но настройка PATH - нетривиальный процесс для неопытного пользователя компьютера.Для этого я намерен объединить двоичный файл GDAL при распространении вышеупомянутой программы.,Итак, я включил его в тот же каталог, что и программа.
Я попытался вызвать ту же команду следующим образом,
ProcessBuilder pb = new ProcessBuilder(path+"\\gdal\\bin\\gdal\\apps\\gdal_translate","-ot","Float32","-of","ENVI","b","1","abc.tif","def.bin");
, где path - это переменная, указывающая на двоичные файлы, скопированные вкаталог проекта.
С некоторым произвольным кодом выхода произошел сбой.
Попытки командной строки
Итак, я попытался запустить коднепосредственно в командной строке, где сначала я обнаружил ошибку, что конкретный gdal300.dll
не может быть найден.Итак, я скопировал необходимый dll в gdal\bin
в gdal\bin\gdal\apps\
.С этим я получил ошибку, так как некоторые другие DLL отсутствуют.Чтобы решить эту проблему и избежать дальнейших проблем с dll, я уничтожил проблему, скопировав все dll, присутствующие в gdal\bin
, в gdal\bin\gdal\apps\
.
Теперь программа выдала следующий вывод.
Полагаю, я не могу продолжать копировать отсутствующие файлы в папку bin.
Требования к решению
- Использовать GDAL без указания PATH в Windows.
Другоесвязанный с этим вопрос
Упаковка GDAL с Java
Этот вопрос не решает мою проблему напрямую (так как решение зависит от Linux) Кроме того, я хотел бычтобы не манипулировать глобальными путями, лучше использовать gdal только для этой программы.