Ho provato a scrivere in formato Json in Java, ma ho rilevato NullPointerException quando la dimensione del file è> 1 GB. Qualcuno può aiutarmi a risolvere questo problema?Gson.toJson genera NullPointerException quando la dimensione del file> 1 GB
Il codice continua a generare file Json e la dimensione dei file continua ad aumentare. Una volta la dimensione del file> 1 GB, il codice genera un'eccezione come mostrato di seguito. Ho usato set di dati diversi per i test, quindi non penso che sia il problema dei dati. La mia ipotesi è che ci sia un limite di dimensioni per Gson.toJson in Java.
Il mio codice è:
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();
}
}
L'eccezione viene generata è:
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)
Strano, lo StackTrace indica il 'char []' passato da [ 'StringBuffer.toString'] (http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/7-b147/java/lang/StringBuffer.java#StringBuffer.toString%28% 29) è 'null' ... –
Sì, mi sentivo anche un po 'strano. Ho provato diversi set di dati diversi, e la stessa eccezione si presenta proprio al punto 1GB: – Long
@jlordo Sembra impossibile, dato che la creazione dell'array richiede un argomento 'int'. 'int's può overflow, ma questo genererebbe un' NegativeArraySizeException'. –