LINUX.ORG.RU

Помогите победить java

 


0

1

Здравствуйте.

Запускаю jar файл jav'ой Azul Zulu, без затей распакованной в ~/jdk (действую таким образом вследствии обсуждения моего прошлого поста на эту же тему)

~/jdk/bin/java -jar ~/M210Projects/BuildGDX.jar

Всё было отлично, но затем автор jar'а обновил своё произведение, и я стал иметь ошибку:

Exception in thread "Build Application" java.lang.NoClassDefFoundError: Could not initialize class org.lwjgl.opengl.Display
	at ru.m210projects.Build.desktop.Lwjgl.LwjglGraphics.dispose(LwjglGraphics.java:277)
	at ru.m210projects.Build.Architecture.BuildFrame.dispose(BuildFrame.java:164)
	at ru.m210projects.Build.Architecture.BuildApplication.destroyLoop(BuildApplication.java:154)
	at ru.m210projects.Build.Architecture.BuildApplication.access$1(BuildApplication.java:143)
	at ru.m210projects.Build.Architecture.BuildApplication$1.run(BuildApplication.java:94)

Поискал и поставил в синаптике (я убунтоид) всё, что связано с этим lwjgl, пробовал запускать с ключом -classpath, указывая различные каталоги типа /usr/share/java, пробовал копировать в свой ~/jdk всяческие *ljwgl*.so из системных каталогов - всё без толку.

Гугль мучил, но поиск выдаёт советы для профессионалов по компиляции java приложений, а мне нужно победить уже готовый jar.

Прошу совета у понимающих людей - сам я в jav'е не соображаю ничего.

Спасибо за внимание.

★★★★

без затей распакованной в ~/jdk

Так себе затея.

действую таким образом вследствии обсуждения

И совет тот, тоже так себе.

vvn_black ★★★★★
()

без затей распакованной в ~/jdk

Поискал и поставил в синаптике (я убунтоид) всё, что связано с этим lwjgl

Что же могло пойти не так…

vvn_black ★★★★★
()

У тебя, очевидно, jar без зависимостей запакован. Запускать надо тогда так: java -cp "BuildGDX.jar:lib/*" my.package.MainClass, положив в lib зависимости.

Ещё можно через переменные окружения добавить системные каталоги. Что-то вроде export CLASSPATH=/usr/lib/java. Ну и JAVA_HOME тоже не мешало б установить.

cocucka ★★★★☆
()
Последнее исправление: cocucka (всего исправлений: 1)

убунтоид

У азуловского JDK есть deb пакеты. Поставь из них. И стиви не слушай, он так себе специалист.

cocucka ★★★★☆
()
Последнее исправление: cocucka (всего исправлений: 1)
Ответ на: комментарий от vvn_black

Ты зря пытаешься глубокомысленно хихикать над моим невежеством - я уже написал, что «я в jav'е не соображаю ничего». Впустую оттопыривать губу я в свой пост никого не приглашал, счастливого тебе пути.

piyavking ★★★★
() автор топика
Ответ на: комментарий от piyavking

Ну у тебя и самомнение. Думаешь, весь мир крутится вокруг тебя, чтобы похихикать?

я уже написал, что «я в jav’е не соображаю ничего»

Ну и не слушай плохих советов тогда.

vvn_black ★★★★★
()

Azul Zulu, без затей распакованной в ~/jdk

Это правильно.

NoClassDefFoundError: Could not initialize class org.lwjgl.opengl.Display

В приложении баг. Обратись к разработчику.

Legioner ★★★★★
()
Ответ на: комментарий от Legioner

То есть мне можно не перебирать версии явы? Я подозреваю, что это ни к чему не приведёт, а мороки с этим будет порядочно. К разрабу обращаться не особо поможет, он, похоже, не линуксоид, и не особо склонен к фидбеку, увы(

В принципе, ладно. Худо-бедно его эмулятор всё-таки можно заставить работать, буду надеяться, что в следующих релизах этот баг каким-нибудь чудом пропадёт. Спасибо!

piyavking ★★★★
() автор топика
Ответ на: комментарий от piyavking

Да, похоже он криво запаковал зависимости в jar. Линукс тут не причём.

cocucka ★★★★☆
()
Ответ на: комментарий от piyavking

То есть мне можно не перебирать версии явы?

Перебор версий явы тебе ничего не даст. Упомянутый класс содержится в сторонней библиотеке http://legacy.lwjgl.org/ которой в поставке Java нет и быть не может. А так как приложения обычно используют множество разных библиотек, то я тебе даже советовать не буду подложить эту библиотеку, т.к. во-первых ты не знаешь, какую версию разработчик использовал, во-вторых вылезет следующая ошибка из-за следующей недостающей библиотеки.

К разрабу обращаться не особо поможет, он, похоже, не линуксоид, и не особо склонен к фидбеку, увы(

Попробуй создать отдельную тему, опиши, что за программу скачиваешь, как запускаешь. Может помогут тебе тут, может неправильно запускаешь.

Legioner ★★★★★
()
Ответ на: комментарий от Legioner

Попробуй создать отдельную тему, опиши, что за программу скачиваешь

Да оно того не стОит. Прога - эмуль доисторической досовой культовой игрухи, и этот эмуль состоит из одного-единственного jar`а.

может неправильно запускаешь

Ну а как его ещё запускать, кроме, как через «java -jar» с ключами или без них?

piyavking ★★★★
() автор топика
Ответ на: комментарий от ya-betmen

сейчас попробую, спасибо

и подкинь его в класспас

а если я его закину в один каталог с запускаемым jar'ом - сойдёт?

piyavking ★★★★
() автор топика
Последнее исправление: piyavking (всего исправлений: 1)
Ответ на: комментарий от izzholtik

Запускается обычной java из репозитория, по крайней мере меню появляется.

$ java --version
openjdk 11.0.8 2020-07-14
OpenJDK Runtime Environment (build 11.0.8+10-post-Ubuntu-0ubuntu120.04)
OpenJDK 64-Bit Server VM (build 11.0.8+10-post-Ubuntu-0ubuntu120.04, mixed mode, sharing)

запускал так:java -jar BuildGDX.jar

screamager
()
Ответ на: комментарий от screamager

угу.

Не знаю, может, у ТС ошибка выскакивает на этапе запуска движка. Там fat jar, куча всего запаковано, не выглядит так, будто автор забыл положить либы.

izzholtik ★★★
()
  1. jre/jdk можно просто распаковывать, они так и ставятся установщиком/пакетами, оракл есличо в таре Яву раздавал всю жизнь

  2. Ява не может найти либу, на которую ссылается файл в жаре, обычно либки пихают в сам жар, но тут видимо либо лицензионные хотелки либы, либо просто обобщение - тебе надо найти жарник либы, который реализует org.lwjgl.opengl.Display и попробовать подпихнуть его как выше показали.

Но для начала однозначно стоит почитать сайт программы твоей - на ровном месте либы в ехт не выносят, и пишут потом как чего запускать и где взять нужное

rukez ★★★★
()
Ответ на: комментарий от rukez

В пятый раз говорю - в jar есть всё, что нужно. А дистрибутив JRE, который использует ТС, у меня вообще не запустился.

izzholtik ★★★
()
Ответ на: комментарий от vvn_black

Так себе затея.

Это единственный способ установить Java так, чтобы не получить никаких идиотских проблем. Говорю как человек с 10 годами программирования на Java и афтар https://jdk.dev.

Конечно, кроме распаковки, нужно еще переменную окружения JAVA_HOME прописать.

stevejobs ★★★★☆
()
Ответ на: комментарий от izzholtik

в jar есть всё, что нужно

Именно того класса там и нет. Хз почему автор его не упаковал. Мб он в транзитивной зависимости и почему-то не был добавлен в jar.

А дистрибутив JRE, который использует ТС, у меня вообще не запустился.

Azul и не запустился? Это с руками уже что-то не то.

cocucka ★★★★☆
()
Ответ на: комментарий от stevejobs

Это единственный способ установить Java так, чтобы не получить никаких идиотских проблем

JDK да, лучше ставить не пакетным менеджером, а чем-нибудь вроде jenv или sdkman. А вот JRE-то как раз нормально, по крайней мере в убунте, работает из пакетов и можно сразу несколько версий ставить и потом через update-alternatives выбирать.

cocucka ★★★★☆
()

У меня всё работает.

Скачал BuildGDX вот отсюда:

https://m210.duke4.net/index.php/downloads/download/8-java/54-buildgdx

Скачал джаву отсюда: https://docs.aws.amazon.com/corretto/latest/corretto-8-ug/downloads-list.html

Активировал джаву:

export JAVA8_HOME=$HOME/opt/java/corretto8
export JAVA_HOME=$JAVA8_HOME
export PATH=$JAVA_HOME/bin:$PATH
java -version

openjdk version "1.8.0_265"
OpenJDK Runtime Environment Corretto-8.265.01.1 (build 1.8.0_265-b01)
OpenJDK 64-Bit Server VM Corretto-8.265.01.1 (build 25.265-b01, mixed mode)

Распаковал BuildGDX, перешел в директорию где он лежит, выполнил:

java -jar ./BuildGDX.jar

PROFIT

stevejobs ★★★★☆
()
Ответ на: комментарий от cocucka

А вот JRE-то как раз нормально

что такое JRE? ))) Это термин тёмных времен Java 8

официальная позиция партии в том, что нет больше никаких JRE, только JDK. Только самая большая и жирная сборка. Если тебе нужна облегченная версия - то изволь собирать её самостоятельно.

вот релиз ноуты для JDK 11:

«In this release, the JRE or Server JRE is no longer offered. Only the JDK is offered. Users can use jlink to create smaller custom runtimes.»

stevejobs ★★★★☆
()
Ответ на: комментарий от stevejobs

Можно подумать, что только Оракл сборки поставляет. И AdoptOpenJDK, и Azul, оба собирают JRE поставки. А трахаться с jlink пускай другие будут.

cocucka ★★★★☆
()
Ответ на: комментарий от stevejobs

Что там, кстати, по тёмным временам? С неделю назад попробовал потыкать новые версии - на 14 даже IDE толком не работает, на 13 Tomcat не видит datasource'ов, не запускаются шаблонные проекты Spring Boot'a. . Оно вообще живо там?

izzholtik ★★★
()
Ответ на: комментарий от cocucka

с руками что-то не то

$ ./java
bash: ./java: No such file or directory

$ file ./java
java: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-musl-x86_64.so.1, not stripped

$ sudo apt install musl
...

$ ./java
Error loading shared library libz.so.1: No such file or directory (needed by /home/kirill/.local/share/Trash/files/zulu14.29.23-ca-jdk14.0.2-linux_musl_x64/bin/../lib/libjli.so)
Error relocating /home/kirill/.local/share/Trash/files/zulu14.29.23-ca-jdk14.0.2-linux_musl_x64/bin/../lib/libjli.so: inflate: symbol not found
Error relocating /home/kirill/.local/share/Trash/files/zulu14.29.23-ca-jdk14.0.2-linux_musl_x64/bin/../lib/libjli.so: inflateEnd: symbol not found
Error relocating /home/kirill/.local/share/Trash/files/zulu14.29.23-ca-jdk14.0.2-linux_musl_x64/bin/../lib/libjli.so: inflateInit2_: symbol not found

$ sudo apt-get install zlib1g
...

/java
Error loading shared library libz.so.1: No such file or directory (needed by /home/kirill/.local/share/Trash/files/zulu14.29.23-ca-jdk14.0.2-linux_musl_x64/bin/../lib/libjli.so)
Error relocating /home/kirill/.local/share/Trash/files/zulu14.29.23-ca-jdk14.0.2-linux_musl_x64/bin/../lib/libjli.so: inflate: symbol not found
Error relocating /home/kirill/.local/share/Trash/files/zulu14.29.23-ca-jdk14.0.2-linux_musl_x64/bin/../lib/libjli.so: inflateEnd: symbol not found
Error relocating /home/kirill/.local/share/Trash/files/zulu14.29.23-ca-jdk14.0.2-linux_musl_x64/bin/../lib/libjli.so: inflateInit2_: symbol not found

Не, я могу и дальше трахаться с зависимостями этого кривого поделия, но ради чего?

izzholtik ★★★
()
Ответ на: комментарий от izzholtik

То есть ты ставишь сборку для alpine linux (на базе musl) на ubuntu (все ещё с glibc) и говоришь, что у тебя прямые руки?

cocucka ★★★★☆
()
Ответ на: комментарий от cocucka

А. Я чёт подумол, что Operating System: any - это любой линукс. Тупой, не спорю.

izzholtik ★★★
()
Ответ на: комментарий от cocucka

кто вообще в здравом уме ставит сборки васяна, а не опенжре/ждк или ораклжре/ждк, в чем смысл этого «ненужно»?

anonymous
()

Кстати говоря,

java -verbose -jar '/home/kirill/Desktop/BuildGDX.jar' | grep 'org.lwjgl'

молчит. Вероятно, без ресурсов эмулируемой игрушк сабж даже не пытается инициализировать OpenGL и, соответственно, не падает.

izzholtik ★★★
()
Ответ на: комментарий от anonymous

Это Azul-то васяны? лол

Скорее в AdoptOpenJDk накосячат, чем в азуле.

cocucka ★★★★☆
()
Ответ на: комментарий от piyavking

Ну а как его ещё запускать, кроме, как через «java -jar» с ключами или без них?

Стандартный способ запуска java-приложения это java -cp path-to-file1.jar:path-to-file2.jar:...:path-to-fileN.jar com.pckg.MainClass

Через java -jar можно запускать только специальным образом подготовленные приложения.

Legioner ★★★★★
()
Ответ на: комментарий от anonymous

Смысл в том, что на халяву оракл особо ничё не собирает кроме последней версии, а азул собирает. Но в целом да, самый лучший вариант это использовать последнюю стабильную версию от Oracle (Java 14 на текущий момент).

Legioner ★★★★★
()
Последнее исправление: Legioner (всего исправлений: 1)
Ответ на: комментарий от izzholtik

Меню запускается

меню и у меня запускается, проблемы с запуском непосредственно игры с polymost рендером.

piyavking ★★★★
() автор топика
Ответ на: комментарий от screamager

с меню проблем нет, трудность лежит глубже.

piyavking ★★★★
() автор топика
Ответ на: комментарий от vtVitus

cd ~/M210Projects/

у меня так в скрипте запуска и было прописано - не помогло.

piyavking ★★★★
() автор топика
Ответ на: комментарий от izzholtik

без ресурсов эмулируемой игрушк сабж даже не пытается инициализировать OpenGL и, соответственно, не падает

ну да, там в менюхе можно выбирать два рендера - Classic и Polymost, так вот второй использует опенгл, и с ним и возникает эта проблема...

piyavking ★★★★
() автор топика
Ответ на: комментарий от LongLiveUbuntu

Эта штука пытается найти игру в папке стима, так что имеет.

izzholtik ★★★
()

В чём было дело

Совершенно случайно наткнулся на корень зла. Почему-то xrandr не подхватывал в список возможных режимов фактически установленный, командой в автозагрузке:

xrandr --addmode VGA1 1920x1080

все беды мгновенно исчезли.

piyavking ★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.