Tôi đang cố gắng sử dụng Byte Buddy thư viện trong Android nhưng tôi nhận được một lỗi:Lỗi sử dụng Byte Buddy trên Android
java.lang.IllegalStateException: This JVM's version string does not seem to be valid: 0
Tôi đã được mã hóa gì cả, chỉ cần:
ByteBuddy test = new ByteBuddy();
trong App của tôi java
tôi đã nhập khẩu:
<dependency>
<groupId>net.bytebuddy</groupId>
<artifactId>byte-buddy</artifactId>
<version>0.7.7</version>
</dependency>
nhưng nó đã không làm việc, để tôi thử với:
<dependency>
<groupId>net.bytebuddy</groupId>
<artifactId>byte-buddy-android</artifactId>
<version>0.7.7</version>
</dependency>
nhưng tôi vẫn nhận được cùng một lỗi.
EDIT
Tôi đã đưa dòng này trước khi khởi ByteBuddy:
System.setProperty("java.version", "1.7.0_51");
Nhưng bây giờ tôi có được điều này lỗi khác:
Caused by: java.lang.UnsupportedOperationException: can't load this type of class file.
cho mã này:
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();
Trên Android, hãy thử thêm phiên bản tệp lớp một cách rõ ràng: mới ByteBuddy (ClassFileVersion.JAVA_6), phụ thuộc Android chứa một ClassLoadingStrategy cụ thể của Android. –
Tôi đã thay đổi chiến lược tải lớp cho Android và chỉ định ClassFileVersion nhưng tôi vẫn gặp lỗi tương tự. –
Bạn hiện không sử dụng chiến lược tải lớp Android. Các chiến lược Mặc định không hoạt động ở đó. Khởi tạo một bằng cách sử dụng "mới". –