„Could not initialize class com.thoughtworks.xstream.converters.collections.TreeMapConverter“ beim Öffnen

Das Öffnen von einer SaveDatei ist nicht mehr möglich. ( Ladebalken bewegt sich nicht vorran )

Tritt mit allen getesteten Versionen ( 55.0 und 54.2 ) und nach einem Update der OpenJDK 17 auf.

Terminal Ausgabe des Errors:

$ ./PortfolioPerformance
OpenJDK 64-Bit Server VM warning: Ignoring option --illegal-access=permit; support was removed in 17.0
WARNING: Using incubator modules: jdk.incubator.vector, jdk.incubator.foreign
Exception in thread “Thread-4” java.lang.NoClassDefFoundError: Could not initialize class com.thoughtworks.xstream.converters.collections.TreeMapConverter
at com.thoughtworks.xstream.XStream.setupConverters(XStream.java:820)
at com.thoughtworks.xstream.XStream.(XStream.java:574)
at com.thoughtworks.xstream.XStream.(XStream.java:496)
at com.thoughtworks.xstream.XStream.(XStream.java:465)
at com.thoughtworks.xstream.XStream.(XStream.java:411)
at com.thoughtworks.xstream.XStream.(XStream.java:350)
at name.abuchen.portfolio.model.ClientFactory.xstream(ClientFactory.java:1178)
at name.abuchen.portfolio.model.ClientFactory.access$0(ClientFactory.java:1174)
at name.abuchen.portfolio.model.ClientFactory$XmlSerialization.load(ClientFactory.java:104)
at name.abuchen.portfolio.model.ClientFactory$PlainWriter.load(ClientFactory.java:142)
at name.abuchen.portfolio.model.ClientFactory.load(ClientFactory.java:415)
at name.abuchen.portfolio.ui.editor.LoadClientThread.run(LoadClientThread.java:34)

** (Portfolio Performance:6065): CRITICAL **: 07:44:00.673: JNI class pointer is NULL for class org/eclipse/swt/accessibility/AccessibleObject

Die Exception triggert bei jedem erneuten Aufruf der Datei.

Die XStream Bibliothek braucht aktuell noch diese Option - also JDK 11 verwenden…

Wie kann ich JDK 11 verwedenden, wenn JDK 17 im System installiert ist?
Also wenn ich beide versionen im System habe, wie konfiguriere ich PP so, dass es JDK 11 verwendet ? Gibt es da eine config Datei oder ähnliches ?

Oder muss ich eine environment variable setzen ?

In der PortfolioPerformance.ini Datei kannst Du die VM konfigurieren (bitte beachte die zwei Zeilen):

-vm
/opt/sun-jdk11/bin/java

Die beiden Zeilen müssen vor der Zeile die mit -vmargs enthält stehen.

Siehe auch: eclipse.ini - Eclipsepedia

Interessant. Bei mir kann ich PP ohne Probleme auch mit JDK 17 starten (allerdings den OpenJDK Build von Zulu)

Ich kann PP mit Java SE 17 unter Windows ebenfalls starten, aber die Dateien nicht öffnen. Es gibt keine Meldung und es passiert einfach nichts. Eine neue Datei scheitert dann beim Hinzufügen von Wertpapieren:

java.lang.reflect.InaccessibleObjectException: Unable to make field private final int java.time.LocalDate.year accessible: module java.base does not “opens java.time” to unnamed module @6f289728
Unable to make field private final int java.time.LocalDate.year accessible: module java.base does not “opens java.time” to unnamed module @6f289728

Mit Java 16 in der INI läuft es dann wieder wie bisher. Danke für die Hilfe.