Comments (5)
I did other tests.
it seems that the error occures when you try to add an object of type Map with more than 5 objects in it.
It does the same error when I do that:
val data:Map[String,Any] = Map(
"test1" -> "test1",
"test2" -> "test2",
"test3" -> "test3",
"test4" -> "test3",
"test5" -> "test3"
)
val data2 = Map("mais oui" -> data)
map.putAll(data2)
jdbm.commit()
jdbm.close()
val jdbm2 = DBMaker.openFile("scalaError").deleteFilesAfterClose().make()
val map2 = jdbm2.getHashMap("test")
map2.clear()
jdbm2.commit()
from jdbm3.
I am still very interested in knowing why I get this NPE but It seems I have found a workaround.
If you use scala.collection.mutable.Map instead of the immutable version, it seems to work.
from jdbm3.
the stacktrace
java.lang.Error: Could not instanciate class
at org.apache.jdbm.SerialClassInfo.readObject(SerialClassInfo.java:493)
at org.apache.jdbm.Serialization.readObject(Serialization.java:40)
at org.apache.jdbm.Serialization.deserialize(Serialization.java:901)
at org.apache.jdbm.Serialization.deserialize(Serialization.java:614)
at org.apache.jdbm.DBStore.fetch2(DBStore.java:400)
at org.apache.jdbm.DBStore.fetch(DBStore.java:366)
at org.apache.jdbm.DBCacheMRU.fetch(DBCacheMRU.java:165)
at org.apache.jdbm.BTreeLazyRecord.get(BTreeLazyRecord.java:28)
at org.apache.jdbm.HTreeBucket.removeElement(HTreeBucket.java:179)
at org.apache.jdbm.HTreeDirectory.remove(HTreeDirectory.java:294)
at org.apache.jdbm.HTree.remove(HTree.java:219)
at org.apache.jdbm.HTreeDirectory$HDIterator.remove(HTreeDirectory.java:611)
at org.apache.jdbm.HTree.clear(HTree.java:258)
at com.yoocos.test.JdbmIssue.test(JdbmIssue.scala:43)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222)
at org.junit.runners.ParentRunner.run(ParentRunner.java:300)
at org.junit.runner.JUnitCore.run(JUnitCore.java:157)
at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:63)
Caused by: java.lang.NullPointerException
at java.lang.reflect.Array.newArray(Native Method)
at java.lang.reflect.Array.newInstance(Array.java:52)
at org.apache.jdbm.Serialization.deserializeArrayObject(Serialization.java:1094)
at org.apache.jdbm.Serialization.deserialize(Serialization.java:910)
at org.apache.jdbm.SerialClassInfo.readObject(SerialClassInfo.java:487)
... 34 more
from jdbm3.
Ok I found something that seems to work.
The issue is that the two properties classId2class and class2classId are not populated.
So instead of using them in deserializeArrayObject I use the property registered like that:
Class clazz = Class.forName(registered.get(classId).getName());
my test is passing now.
from jdbm3.
Closing, reopen issue in JDBM4 if it is still a problem.
from jdbm3.
Related Issues (20)
- Not Serializable Exception HOT 1
- Corruption of index files (double get and IndexOutOfBounds errors) HOT 8
- Found setting where I lose part of a List value 'silently' HOT 1
- DB.defrag(false) ALWAYS increases the size of i.0 file HOT 1
- java.lang.OutOfMemoryError: Map failed HOT 3
- I'm confused about the record, slot, page, physical and logical list. Is there any document?
- Not working with JDK11
- BTree.java is a b plus tree or b tree?
- is someway to repair corrupt data file ? HOT 1
- TreeMap#size() returns wrong values after rollback
- DBMaker#openFile should take a "File" as argument HOT 1
- Support serializing/deserializing Hadoop keys and values HOT 1
- java.lang.OutOfMemoryError: Map failed HOT 2
- NPE on Array deserialization
- floorEntry on BTreeMap behaves incorrectly on border cases
- Null retrieval of inserted keys HOT 1
- Unable to add an element to the beginning of a list HOT 1
- Does not work with JodaTime
- deserialization of HashSet fails HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from jdbm3.