Прежде чем вы повторите этот вопрос, я объясню вам, что я знаю, что я прочитал и другие вопросы, и почему это не работает для меня.java.lang.SecurityException с отражением
Моя цель - реализовать отражение игры на основе Java, для которой у меня есть .jar. Я прикрепляю его как внешнюю библиотеку в своем проекте eclipse.
Я получаю ошибку
java.lang.SecurityException: class "Client"'s signer information does not match signer information of other classes in the same package
на линии
Class clazz = Client.class;
Теперь, как уже упоминалось в других вопросах. Причиной этой ошибки является то, что у меня есть две ссылки на библиотеки, которые были подписаны по-разному? (Возможно, смысл их компилируется с разными версиями java?).
Только две библиотеки, на которые я ссылаюсь, являются системой JRE (мой проект построен на 1.7) и .jar игры.
Возможно, возникла бы эта ошибка, если бы .jar был скомпилирован на 1.6? Должен ли я переделать свой проект с использованием JRE 1.6? Как я могу определить, с чем была скомпилирована клиентская версия JRE?
Спасибо!
Редактировать: Еще одна мысль, которая у меня была, это, возможно, файл .jar самой игры имеет классы, которые имеют разные подписи (возможно, чтобы остановить отражение). Это возможно?
Поскольку мой код и .jar не из тех же источников, есть ли способ определить подпись jar/Client.class и имитировать его/дублировать? – k9b
@ k9b Если у вас нет ключа подписи, его невозможно скопировать. Это будет противодействовать подписанию файла Jar. – SubOptimal
Если вам было разрешено это сделать, вы могли бы получить доступ и расширить пакетные частные классы подписанной банки, что не похоже на безопасную работу. (С точки зрения подписавшего, то есть.) – biziclop