Как подменить файл в jar

Металлург1985

Путник
Пользователь
Сообщения
32
Розыгрыши
0
Репутация
0
Реакции
2
Баллы
85
Хроники
  1. Grand Cursade
Исходники
Присутствуют
Сборка
Mobius
Добрый вечер всем.

Подскажите, если ли рабочий способ подменить в архиве GameServer.jar один из файлов .class на тот, что получился при компиляции сборки из последних исходников?
В том, что получился при компиляции, у меня изменена цена сдачи в магазины НПС. Но сама сборка по ряду причин, которые долго описывать, не работает в целом виде.
Хочу взять из этой сборки один файл и заменить им тот, который лежит внутри архива в рабочей сборке.
Открываю существующий GameServer.jar из рабочей сборки прогой 7Zip, удаляю исходный файл, вкладываю вместо него новый, сохраняю.
После чего при попытке зайти в игру клиент после ввода логина-пароля, выбора сервера начинает ругаться "Не удалось соединиться с сервером".
Предположение таково, что после замены файла каким-то образом нарушается целостность архива и сервер ломается.
Есть у кого какие мысли по данной теме?
 
я тоже как то задавался таким вопросом, но всё что мне посоветовали из рабочего это использовать диртджо для подмены некоторых цифр - пробовал да работает, но не всё можно поменять без болезненно это цифы а это очень мало
 
А есть например вариант настроить запуск сервера так, чтобы он подгружал файлы не изнутри архива GameServer.jar, а откуда-то из внешних папок, непосредственно из файлов .java?
 
Да мне больше интересен рабочий способ вставить отредактированный и повторно скомпиленный файл обратно в JAR-архив.
Вариант "создать zip-архив и переименовать его в jar" не фурычит: после этого сервер вроде как собирается, но клиент к нему подрубаться отказывается...
 
Как и написано в теме нужен декомпил файла, а после декомпила файлы кривые они на половину рабочие их нужно вручную пересобирать. Если в программировании и архитектуре сервера понимаешь очень мало вероятность что ты их собирешь правильно очень маленькая. Когда сервер не пускает для входа в игру обычно в лог пишет ошибку я думаю что сервер (Гейм сервер ) и не запускается вовсе т.к перед стартом он много чего там делает поэтому и не пускает (если коротко файл java из декомпила собран не верно)
 
А вариант положить куда-то исходный файл .java из исходников Мобиуса, чтобы его запускатор подгружал не из ядра, а из этого места - не прокатит?
Я для интереса положил его в /scripts/custom. Такое ощущение, что запускатор его попытался вычитать, потому как выдал ошибку на сборке сервера в самом конце:

[19/01 19:22:01] GameServer: Failed to execute script list!
java.lang.NullPointerException: Cannot invoke "javax.tools.JavaFileObject.getName()" because the return value of "javax.tools.Diagnostic.getSource()" is null
at org.l2jmobius.gameserver.scripting.java.JavaExecutionContext.executeScripts(JavaExecutionContext.java:166)
at org.l2jmobius.gameserver.scripting.ScriptEngineManager.executeScriptList(ScriptEngineManager.java:181)
at org.l2jmobius.gameserver.GameServer.<init>(GameServer.java:372)
at org.l2jmobius.gameserver.GameServer.main(GameServer.java:496)

При этом сервер собрался и даже клиент к нему подключился, правда на игровой процесс это не повлияло, изменения цены покупки вещей НПС, которое я прописал внутри java-файла не учлось в логике игры.
 
Если файл java от мобиуса, а запускаемый сервер от open-team или любой другой которые были созданы другими разрабами 99% что они не подойдут друг другу. К примеру банально файлы могут быть в разных папках, методы могут называться по разному
 
На счет ошибки: at org.l2jmobius.gameserver.scripting.java.JavaExecutionContext.executeScripts(JavaExecutionContext.java:166)
Расширения запускаются отдельно от сервера JavaExecutionContext.executeScripts (EXECUTE ) он не видит нужные методы/данные и пропускает или падает. Но сам сервер стартует т.к он запускается отдельно
 
Данный сайт использует cookie. Вы должны принять их для продолжения использования. Узнать больше…