우리는 Kryo Serializer를 사용하여 응용 프로그램 객체를 직렬화하여 카프카 스트림으로 푸시하려고합니다. 직렬화 방법은Kryo Serializer 런타임시 IllegalAccessError
private ThreadLocal<Kryo> kryos = new ThreadLocal<Kryo>() {
protected Kryo initialValue() {
Kryo kryo = new Kryo();
kryo.addDefaultSerializer(MyApp.class, new MyAppKyroSerializer());
return kryo;
};
};
입니다
직렬화 코드가있다 :
우리는 다음과있는 IllegalAccessError를 얻고있는 응용 프로그램을 실행하는@Override
public byte[] serialize(String topic, MyApp data) {
ByteBufferOutput output = new ByteBufferOutput(100);
kryos.get().writeObject(output, data);
return output.toBytes();
}
동안 :
Exception in thread "main" java.lang.IllegalAccessError: tried to access field com.esotericsoftware.kryo.io.Output.capacity from class com.esotericsoftware.kryo.io.ByteBufferOutput
at com.esotericsoftware.kryo.io.ByteBufferOutput.<init>(ByteBufferOutput.java:66)
at com.esotericsoftware.kryo.io.ByteBufferOutput.<init>(ByteBufferOutput.java:58)
at com.mycom.serializer.MyAppSerializer.serialize(MyAppSerializer.java:43)
이 이상하다 ByteBufferOutput 때문에 확장 출력 및 용량은 보호 된 필드입니다. 내가이 일을 할 생각이 시도