Open ingconti opened 2 years ago
Effettivamente abbiamo problemi di lettura con i file, ho cercato su internet e trovato che veniva consigliato l'utilizzo di getResourceAsStream() in quanto funzionerebbe in ogni caso, ma invece non funziona quando viene creato il .jar
Al momento nel codice viene usata la lettura di json per i parametri di rete, il codice è il seguente:
private static final String filename = "/NetworkParameters.json";
[...]
Reader reader;
Integer returnPort;
InputStream stream;
try {
stream = Preferences.class.getResourceAsStream(filename);
reader = new InputStreamReader(stream);
} catch (NullPointerException e) {
System.err.println("Preferences file hasn't been found, using standard port");
e.printStackTrace();
return standardPort;
}
Quale potrebbe essere la causa del mancato funzionamento all'interno di un jar?
Siamo riusciti a leggere file dalle risorse, abbiamo scoperto che il problema originario era dovuto ad un'import mancante nel file POM Qui una classe che utilizza correttamente la lettura di file json (file Preferences.java)
public static int readPortFromJson(){
Type mapType = new TypeToken<Map<String, Object>>() {}.getType(); //Map<NetworkFieldEnum, Object> is a generic Type. It needs to be specified
Map<String, Object> map;
Reader reader;
Integer returnPort;
InputStream stream;
try {
stream = Preferences.class.getResourceAsStream(filename);
reader = new InputStreamReader(stream);
} catch (NullPointerException e) {
System.err.println("Preferences file hasn't been found, using standard port");
e.printStackTrace();
return standardPort;
}
map = gson.fromJson(reader, mapType);
return ApplicationHelper.getIntFromBrokerField(map.get("defaultPort"));
}
Ho visto che leggete dei file Jason da disco: a parte gli errori che ho segnalato, è importante che al più presto proviate a generare un jar vero e l'ho lanciato da consolle col comando java -jar.
Poi sospetto che avrete qualche altro problema di lettura, se non fallita generazione del JAR o di esecuzione