Я должен поддержать устройство размера 16 КБ в Android 35. Чтобы поддержать устройства размера 16 КБ, мы обновили версию AGP до последнего 8.7. Версия Lates AGP требует версии Jave 17. Однако после обновления версии Java 17 для проекта тестовые примеры выходят из строя, где бы ни использовалось, чтобы получить доступ к частным переменным или методу. Есть так много унаследованных тестовых случаев. Работа над этими тестовыми случаями потребуется много переделки и рефакторирования в коде, что невозможно из -за временного и затрат. Как я могу решить эту проблему без рефакторинга. < /P>
Код, который вызывает проблему < /p>
fun getFinalPrivateVariable(clazz: Class, fieldName: String): Field {
val field = getPrivateVariable(clazz, fieldName)
val modifiers = Field::class.java.getDeclaredField("modifiers")
modifiers.isAccessible = true
modifiers.setInt(field, field.modifiers and Modifier.FINAL.inv())
return field
}
< /code>
Я уже пытался добавить ниже строки в gradle.properties < /p>
--add-opens java.base/java.lang=ALL-UNNAMED --add-opens java.base/java.lang.reflect=ALL-UNNAMED
< /code>
Это не сработало. < /p>
также попытался добавить в build.gradle < /p>
android {
testOptions {
unitTests.all {
jvmArgs += [
'--add-opens=java.base/java.lang.reflect=ALL-UNNAMED',
'--add-opens=java.base/java.lang=ALL-UNNAMED'
]
}
}
}
< /code>
также попытался рефактор < /p>
@Throws(Exception::class)
fun getFinalPrivateVariable(clazz: Class, fieldName: String): Field {
val field = getPrivateVariable(clazz, fieldName)
field.isAccessible = true
// Obtain a VarHandle for the "modifiers" field in the Field class
val modifiersHandle: VarHandle = MethodHandles.privateLookupIn(Field::class.java, MethodHandles.lookup())
.findVarHandle(Field::class.java, "modifiers", Int::class.javaPrimitiveType)
// Remove the FINAL modifier
val mods = modifiersHandle.get(field) as Int
modifiersHandle.set(field, mods and Modifier.FINAL.inv())
return field
}
Подробнее здесь: https://stackoverflow.com/questions/794 ... ception-mo
Java 17 с модификаторами ограничения отражения java.lang.nosuchfieldexception: модификаторы ⇐ JAVA
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Java 17 с модификаторами ограничения отражения java.lang.nosuchfieldexception: модификаторы
Anonymous » » в форуме JAVA - 0 Ответы
- 10 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Java 17 с модификаторами ограничения отражения java.lang.nosuchfieldexception: модификаторы
Anonymous » » в форуме JAVA - 0 Ответы
- 16 Просмотры
-
Последнее сообщение Anonymous
-