Исполняемый файл Java 10 не будет выполняться после установки

У меня странная проблема: у меня есть программа javafx, которую я компилирую и упаковываю с помощью maven (для окон я использую установку Inno для создания пакета установки). После обновления с Java 8 до Java 10 (обновление плагинов в файле pom.xml и обновление конфигурации) - я дошел до точки, когда сборка завершилась успешно.

Проблема в том, что после установки пакета на windows - exe-файл, который запускает программу, не будет работать должным образом. Он начинается на долю секунды, а затем останавливается.

Странная часть: если я попытаюсь запустить тот же exe-файл из папки target\bundle (папка, в которой maven готовит файлы для упаковщика) - он работает нормально!

две папки - target\bundle и Programs files(x86)/vendor/appname идентичны (файлы и содержимое файла конфигурации).

Я проверил разрешения для исполняемого файла в разделе «Файлы программ (x86)/vendor/имя приложения», и они кажутся прекрасными.

Я тестирую на компьютере с Windows 8.1 (и на других, которые демонстрируют такое же поведение, что заставляет меня поверить, что это реальная проблема, а не неправильная конфигурация моей тестовой машины).

тот же скрипт используется для создания установочного пакета для MAC OSX, и на OSX все работает нормально, так что это не проблема с кодом.

Любые идеи относительно того, что вызывает это и как это исправить?

Дополнительная информация :

  1. Это только начало происходить после перехода на Java 10. Java 8 и 9 работают отлично.

  2. Мое приложение не пишет ни в какие файлы в папке установки программных файлов. файлы конфигурации и журнала записываются только в папку %user%/AppData.


person FunkSoulBrother    schedule 26.04.2018    source источник
comment
Доступен ли JavaFX в Java 10 даже в стандартном JDK/JRE? Потому что его собираются удалить.   -  person Impulse The Fox    schedule 26.04.2018
comment
У меня была проблема - я ожидал, что сборка maven завершится ошибкой/выполнение приложения из папки target/bundle завершится ошибкой, но это не так. В любом случае - maven копирует все зависимости в папку приложения, поэтому проблем быть не должно.   -  person FunkSoulBrother    schedule 26.04.2018
comment
То есть, если вручную скопировать приложение со всеми его зависимостями в Program Files, оно будет работать или нет?   -  person Martin Prikryl    schedule 26.04.2018
comment
Когда я копирую папку приложения (как есть) из target/bundle в папку с программными файлами - все работает. пробовал как в Program Files, так и в Program Files (x86).   -  person FunkSoulBrother    schedule 26.04.2018
comment
Таким образом, должна быть какая-то разница между файлами, которые устанавливаются Inno Setup, и файлами, которые вы копируете вручную. Ты проверил? (Я не уведомлен о вашем ответе, если вы не используете @MartinPrikryl)   -  person Martin Prikryl    schedule 27.04.2018
comment
Спасибо @MartinPrikryl, я провел сравнение папок, и файлы оказались идентичными. Единственная разница, которую я мог заметить, заключается в разрешениях. Файлы, установленные программой установки Inno, имеют более строгие разрешения, чем те, которые я вижу в папке target/bundle, но тем не менее их должно быть достаточно для запуска приложения (группа «Прошедшие проверку» имеет разрешения на выполнение исполняемого файла приложения). Я запущу настройку, созданную версией приложения для Java 9 (которая работала нормально), а затем изучу различия между ними и файлами в установке Java 10. Я отчитаюсь здесь после того, как сделаю это.   -  person FunkSoulBrother    schedule 27.04.2018
comment
Можете ли вы опубликовать это как ответ? И отредактируйте свой вопрос, чтобы включить информацию, которая может быть использована для поиска этого ответа в первую очередь? Таким образом, ваш вопрос смогут найти люди, имеющие ту же проблему.   -  person Martin Prikryl    schedule 29.04.2018


Ответы (1)


Я обнаружил проблему, создав рабочий пакет установки вручную с помощью мастера установки Inno, а затем сравнив его с тем, который у меня не был.

После этого я сравнил файл iss (файл конфигурации Inno), созданный мастером, с единственным, который не работал. Выяснилось, что JAR-файлы с надувным замком создавали проблему. Сценарий iss из предыдущей версии скопировал их в папку lib/ext, что создало проблему дублирования пути к классам для распознавателя классов java, поскольку было две копии jar.

Это не требуется в Java 9 и Java 10. Удаление ручного добавления банок надувных замков из файла iss решило проблему.

Надеюсь, это поможет кому-то в будущем :)

person FunkSoulBrother    schedule 01.05.2018