Próbowałem zapisać w formacie Json w Javie, ale napotkałem NullPointerException, gdy rozmiar pliku jest> 1 GB. Czy ktoś może mi pomóc rozwiązać ten problem?Gson.toJson zgłasza wyjątek NullPointerException, gdy rozmiar pliku> 1GB
Kod nadal generuje pliki Json, a ich rozmiar stale rośnie. Po wielkości pliku> 1 GB kod generuje wyjątek, jak pokazano poniżej. Użyłem innego zestawu danych do testowania, więc nie sądzę, że jest to kwestia danych. Domyślam się, że istnieje limit rozmiaru dla Gson.toJson w Javie.
Mój kod to:
private HashMap<String,HashSet<Token>> tokenCounter = new HashMap<String,HashSet<Token>>();
....
private void writeToFile(){
try {
PrintWriter out = new PrintWriter(outputFileName);
out.println(gson.toJson(tokenCounter));
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
Wyjątkiem rzuca to:
java.lang.NullPointerException
at java.lang.String.<init>(String.java:301)
at java.lang.StringBuffer.toString(StringBuffer.java:790)
at java.io.StringWriter.toString(StringWriter.java:204)
at com.google.gson.Gson.toJson(Gson.java:481)
at com.google.gson.Gson.toJson(Gson.java:460)
at com.ebay.classification.discovery.DailyDiscovery.writeToFile(DailyDiscovery.java:181)
at com.ebay.classification.discovery.DailyDiscovery.run(DailyDiscovery.java:169)
at com.ebay.classification.discovery.TestDailyDiscoveryContinue.run(TestDailyDiscoveryContinue.java:142)
at com.ebay.classification.discovery.TestDailyDiscoveryContinue.main(TestDailyDiscoveryContinue.java:245)
dziwne, StackTrace wskazuje 'char []' przekazywane z ['StringBuffer.toString'] (http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/7-b147/java/lang/StringBuffer.java#StringBuffer.toString%28% 29) to 'null' ... –
Tak, czułem się też trochę dziwny. Wypróbowałem kilka różnych zestawów danych, a ten sam wyjątek pojawia się tuż przy punkcie 1GB: – Long
@jlordo To wydaje się niemożliwe, ponieważ tworzenie tablicy przyjmuje argument "int". 'int's może przepełnić, ale spowodowałoby to' NegativeArrayArraySizeException'. –