Я пытаюсь использовать Byte Buddy библиотеку в Android, но я получаю сообщение об ошибке:Ошибка при помощи Byte Бадди на Android
java.lang.IllegalStateException: This JVM's version string does not seem to be valid: 0
Я не закодированы еще ничего, просто:
ByteBuddy test = new ByteBuddy();
в моем приложении .java
я импортировал:
<dependency>
<groupId>net.bytebuddy</groupId>
<artifactId>byte-buddy</artifactId>
<version>0.7.7</version>
</dependency>
, но он не работает, чтобы я попытался с:
<dependency>
<groupId>net.bytebuddy</groupId>
<artifactId>byte-buddy-android</artifactId>
<version>0.7.7</version>
</dependency>
, но я все еще получаю ту же ошибку.
EDIT
Я поставил эту строку перед инициализировать ByteBuddy:
System.setProperty("java.version", "1.7.0_51");
Но теперь я получаю эту другую ошибку:
Caused by: java.lang.UnsupportedOperationException: can't load this type of class file.
для этого кода:
Class<?> dynamicType = new ByteBuddy(ClassFileVersion.JAVA_V6)
.subclass(Object.class)
.method(ElementMatchers.named("toString"))
.intercept(FixedValue.value("Hello World!"))
.make()
.load(getClass().getClassLoader(), AndroidClassLoadingStrategy.Default.WRAPPER)
.getLoaded();
На Android попробуйте добавить версию файла класса явно: новый ByteBuddy (ClassFileVersion.JAVA_6), зависимость от Android содержит специфичную для Android ClassLoadingStrategy. –
Я изменил стратегию загрузки класса на Android-версию и задал ClassFileVersion, но все равно получаю ту же ошибку. –
Вы не используете стратегию загрузки классов Android. Стратегии по умолчанию там не работают. Создайте экземпляр, используя «новое». –