Прошу подсказать как правильно компилировать jar в exe, что бы можно было без проблем открыть на другом пк
в launch4j в вкладке JRE я указываю версию 1.8, пробовал jar хранить в папке с jre и туда же класть exe, но каждый раз скомпилированный exe на другом пк ругается, что нет JRE (в одной папке с ним), у меня же на пк всё работает, но я и разработчик, а другие пользователи могут оказаться не разработчиком java. Может есть какие-то тонкости, о которых не пишут, но везде у всех работает, но опять же НО все видосы старые и софт уже претерпел небольшие изменения. Пробовал на сторонний пк установить jre (просто файлом), так же не помогает
А мне интересно, вот спасибо за ответ, но вы пробовали?
Значит я делаю, а мне пишет на линуксе 7 "/lib64/libc.so.6: version `GLIBC_2.18' not found"
А оказывается это не поддерживается на 7 линуксе, интересно.
Мне теперь пересобирать конфигурацию?
Я как бы не машню (может показаться), но неужели нет способа попроще чем тот где требуется бутылка и вазилин?
Вот ознакомьтесь с тем, что в Линуксе между версиями несовместимость может оказаться гораздо больше, чем в Windows, и если исполняемый файл собран с shared library для другой версии линукса, значит не поддерживается.
Для этого собственно java распространяется в .jar файлах, чтобы как можно меньше зависеть от архитектуры и ее версиях, и зависеть только от версии java
Сделать файл так, чтобы "у других работало" невозможно, если не перечислить этих других и не соблюсти требования этих "других"
если jar, то по идее только jre (если им только запускать, то только runtime)
ну и на шарпе - это если под винду, то в общем случае совместимость между библиотеками довольно высокая.
А если под линукс, то шарповские библиотеки ж копируются те же самые.
А вот с нативными shared libary под линукс, там glibc и зависимости меняются и это гемор, да.
Поэтому хороший выход - jre и jar, тем более что их можно одним пакетом через jlink организовать.
Во-первых, в 2023-м, как и во все предыдущие годы, и во все последующие, делать такого не надо. Если хотите распространять свой софт в виде платформозависимого бинарника, выбирайте соответствующий язык.
Во-вторых, чтобы можно было без проблем открыть на другом ПК, можно в бинарник не компилировать. Уже лет шесть, как в составе JDK есть утилита jlink, позволяющая собрать приложение вместе с JRE и стартовыми скриптами.
Сергей Горностаев, я не так уж много пишу на java (совокупный опыт ~ года 2), но я до сих пор не знаю как собрать экзешник под windows... Знаю, что без JVM (JRE) программу написанную на java запустить нельзя. И "платформа-независимый дух java" для меня остаётся не совсем понятным. Возможно это связано с тем, что меня больше интересует web разработка, то есть не .jar а .war проекты. Поэтому свои .exe программы с использованием GUI javaFX, под windows я ни разу не собирал.
Есть проект GraalVM. В нет большая часть этих задач решена. И я для себя делал утилиты на java которые
работают в data pipelines. Но проект GraalVM имеет спектр ограничений. Почитай. Возможно не любой
код он сможет правильно собрать.
Использовали мы также graal для сборки AWS Lambda. Но это был сложный опыт. Я никому не советую повторять.
И вообще еесли цель - десктоп и графика то я не советую это делать. Просто сам по себе экзешник еще не гарантирует что все у тебя будет работать.