Closed renatn closed 4 years ago
Пример можно? Попробовал сериализовать-десериализовать простой класс с полем ReentrantLock - всё получилось.
Вот такой тест (извиняюсь что на Котлине):
class TestBlockingQueue(
private val capacity: Long,
private val ttl: Long
): Serializable {
private val tasksQueue = HashMap<String, Serializable>()
private val tasksLock = ReentrantLock()
private val tasksFullCondition = tasksLock.newCondition()
//.... методы
}
class TestBlockingQueueTest {
@Test
fun testShouldSerialize() {
val queue = TestBlockingQueue(100, 100)
val buf = ByteArray(57)
val out = SerializeStream(buf)
out.writeObject(queue)
assertEquals(out.count(), 57)
val stream = DeserializeStream(buf)
val queueTest = stream.readObject() as TestBlockingQueue
assertNotNull(queueTest)
}
}
выкидывает Exception:
> AccessError: tried to access class java.util.concurrent.locks.ReentrantLock$Sync from class sun.reflect.Delegate1_ReentrantLock
>
> at sun.reflect.Delegate1_ReentrantLock.read(Unknown Source)
Не воспроизводится. Какая JDK?
/Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home/bin/java
Наверно можно закрыть. Побробую поглубже изучить. Если что вернусь
Привет!
Получаю ошибку при попытке десериализовать класс у которого есть поле типа ReentrantLock. Следующий код
выбрасывает exception java.lang.IllegalAccessError: java/util/concurrent/locks/ReentrantLock$Sync