Как я могу очистить частный статический окончательный набор обернутый сбором. Jvm-args)?
Проблема
Я пытаюсь очистить частный статический окончательный набор standard_headers в библиотеке третьей стороны (Restlet), используя отражение. Поле определено как: < /p>
Код: Выделить всё
private static final Set STANDARD_HEADERS = Collections
.unmodifiableSet(new CaseInsensitiveHashSet(Arrays.asList(...)));
Код: Выделить всё
public static void clearStandardHeaders() {
try {
Class utils = Class.forName("org.restlet.engine.header.HeaderUtils");
Field stdField = utils.getDeclaredField("STANDARD_HEADERS");
stdField.setAccessible(true);
@SuppressWarnings("unchecked")
Set originalSet = (Set) stdField.get(null);
// Try to access the backing collection
Field backingField = originalSet.getClass().getSuperclass().getDeclaredField("c");
backingField.setAccessible(true); //
ошибка < /h2>
java.lang.reflect.InaccessibleObjectException: Unable to make field final java.util.Collection java.util.Collections$UnmodifiableCollection.c accessible: module java.base does not "opens java.util" to unnamed module @11a8c40
< /code>
debug output < /h2>
Отражение успешно находит структуру поля: < /p>
[list]
[*] Класс: java.util.collections $ unmodifiableset < /code> < /li>
superclass: java.util.collections $ unmodifiablecollection [/list]
, но не удается при попытке сделать это доступным из -за системных ограничений.
Код: Выделить всё
Unmodifiable set class: java.util.Collections$UnmodifiableSet
Available fields in java.util.Collections$UnmodifiableSet:
serialVersionUID : long (modifiers: 26)
Superclass fields in java.util.Collections$UnmodifiableCollection:
serialVersionUID : long (modifiers: 26)
c : java.util.Collection (modifiers: 16)
Found field 'c' in superclass java.util.Collections$UnmodifiableCollection
Using backing field: c of type java.util.Collection
Warning: Could not clear STANDARD_HEADERS due to Java module restrictions.
Я попытался добавить добавление-add-opens в плагин Maven Exec:
Подробнее здесь: https://stackoverflow.com/questions/796 ... in-java-17