У меня есть два jar-файла, один - это сервер minecraft spigot.jar
, другой - мой собственный jar (patch.jar
) с несколькими небольшими пользовательскими классами в нем.
Классы в patch.jar
необходимо заменить классы в spigot.jar
, я прочитал множество «руководств» и вопросов об этом, но ни один из них не предоставляет даже базовой информации о том, как это сделать на самом деле, кроме использования параметра classpath в сценарии запуска.
Я пытался:
- -
cp Spigot.jar
Patch.jar: выдает ошибку «нет основного манифеста» для патча, так как у него нет Main (). - -
cp Spigot.jar;
Patch.jar: выводит список jvm -options и закрывает программу. - -
jar Spigot.jar;
Patch.jar: не удается найти jar Spigot.jar; Patch.jar (я знаю, это был долгий путь)
Я сделал общедоступные void main()
и Main-Class
в Patch.jar
манифесте, и он правильно выполнил main()
, а затем завершил работу без загрузки патрубка. Если я изменил порядок загрузки втулки первым, он загрузится нормально и никогда не коснется моего патча.
Кто-нибудь знает, как это сделать, или что-то подобное? Мое требование состоит в том, что НИКАКИХ МОДИФИКАЦИЙ в патрубок сливного крана не вносятся по юридическим и техническим причинам. Я уже вручную заменил классы внутри копии spigot.jar
, чтобы убедиться, что они работают должным образом, с моим кодом проблем нет.
P.S. Это нельзя сделать частью плагина, это мод по какой-то причине, и он является частью поддержки очень большого плагина, который изменяет десятки классов NMS во время выполнения. Это сделано для исправления некоторых вещей, которые нельзя изменить во время выполнения с помощью отражения, или просто для рационального изменения классов переменных.