Opsi 4.3 - Fehler in "opsi-configed": class java.lang.String cannot be cast to class java.lang.Boolean
Opsi 4.3 - Fehler in "opsi-configed": class java.lang.String cannot be cast to class java.lang.Boolean
Wenn man im Tool "opsi-configed" unter "Depot-Konfiguration" (dem zweiten Icon von oben - das mit dem tonneförmigen Symbol) eines unserer OPSI-Depots unter "Software-on-Demand" klickt kommt folgender Fehler:
"Es ist ein unerwarteter Fehler aufgetreten. class java.lang.String cannot be cast to class java.lang.Boolean (java.lang.String and java.lang.Boolean are in module java.base of loader 'bootstrap')
Bitte die Logdatei überprüfen. "
Interessanterweise tritt dieser Fehler nur bei einem unserer beiden Depots auf (leider ausgerechnet am MasterDepot).
In der "Server-Konfiguration" im opsi-configed kann man den Menüpunkt "Software-on-Demand" ohne Fehlermeldung auswählen.
Wenn man die Fehlermeldung betrachtet scheint es ja ein Type-Casting-Problem in den Variablen zu geben - das irgendwo was drin steht, was nicht zum Typ "boolean" als "true" oder "false" passt - ich konnte aber zumindest in den "Software-on-Demand"-Variablen keine Probleme feststellen (alles was "boolean" ist, hatte auch nur ein "true" oder "false" drin stehen - hab ich via opsi-cli abgefragt:
opsi-cli --output-format table jsonrpc execute config_getObjects '["id", "defaultValues", "possibleValues"]' '{"id": "software-on-demand.*"}'
bzw.
opsi-cli --output-format table jsonrpc execute config_getObjects '["id", "defaultValues", "possibleValues"]' '{"id": "*"}'
Ich habe mehrere Version von "opsi-configed" ausprobiert (4.3.7.3 bis hin zur 4.3.8.2) ausprobiert, ohne das sich etwas am Fehler geändert hat.
In der OPSI-webgui scheint es das Problem bei der Anwahl der "Software-on-Demand"-Settings nicht zu geben, aber ich habe den Eindruck, dass die Webgui eher keine vollwertige Alternative zum Tool "opsi-configed" darstellt.
Vielen Dank im Voraus zu jeglichen sachdienlichen Hinweisen.
In der oben erwähnten Logdatei selbst steht folgendes drin:
[3] [2025-05-06 09:48:31.543] [AWT-EventQueue-0] Es ist ein unerwarteter Fehler aufgetreten. class java.lang.String cannot be cast to class java.lang.Boolean (java.lang.String and java.lang.Boolean are in module java.base of loader 'bootstrap')
Bitte die Logdatei überprüfen.
java.lang.ClassCastException: class java.lang.String cannot be cast to class java.lang.Boolean (java.lang.String and java.lang.Boolean are in module java.base of loader 'bootstrap')
at de.uib.utils.table.gui.PropertiesCellEditorAndRenderer.getTableCellRendererComponent(PropertiesCellEditorAndRenderer.java:262)
at java.desktop/javax.swing.JTable.prepareRenderer(Unknown Source)
at de.uib.utils.datapanel.EditMapPanelX$2.prepareRenderer(EditMapPanelX.java:242)
at java.desktop/javax.swing.plaf.basic.BasicTableUI.paintCell(Unknown Source)
at java.desktop/javax.swing.plaf.basic.BasicTableUI.paintCells(Unknown Source)
at java.desktop/javax.swing.plaf.basic.BasicTableUI.paint(Unknown Source)
at com.formdev.flatlaf.ui.FlatTableUI.paint(FlatTableUI.java:471)
at java.desktop/javax.swing.plaf.ComponentUI.update(Unknown Source)
at java.desktop/javax.swing.JComponent.paintComponent(Unknown Source)
at java.desktop/javax.swing.JComponent.paint(Unknown Source)
at java.desktop/javax.swing.JComponent.paintChildren(Unknown Source)
at java.desktop/javax.swing.JComponent.paint(Unknown Source)
at java.desktop/javax.swing.JViewport.paint(Unknown Source)
at java.desktop/javax.swing.JComponent.paintChildren(Unknown Source)
at java.desktop/javax.swing.JComponent.paint(Unknown Source)
at java.desktop/javax.swing.JComponent.paintChildren(Unknown Source)
at java.desktop/javax.swing.JComponent.paint(Unknown Source)
at java.desktop/javax.swing.JComponent.paintChildren(Unknown Source)
at java.desktop/javax.swing.JSplitPane.paintChildren(Unknown Source)
at java.desktop/javax.swing.JComponent.paint(Unknown Source)
at java.desktop/javax.swing.JComponent.paintToOffscreen(Unknown Source)
at java.desktop/javax.swing.BufferStrategyPaintManager.paint(Unknown Source)
at java.desktop/javax.swing.RepaintManager.paint(Unknown Source)
at java.desktop/javax.swing.JComponent._paintImmediately(Unknown Source)
at java.desktop/javax.swing.JComponent.paintImmediately(Unknown Source)
at java.desktop/javax.swing.RepaintManager$4.run(Unknown Source)
at java.desktop/javax.swing.RepaintManager$4.run(Unknown Source)
at java.base/java.security.AccessController.doPrivileged(Unknown Source)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.desktop/javax.swing.RepaintManager.paintDirtyRegions(Unknown Source)
at java.desktop/javax.swing.RepaintManager.paintDirtyRegions(Unknown Source)
at java.desktop/javax.swing.RepaintManager.prePaintDirtyRegions(Unknown Source)
at java.desktop/javax.swing.RepaintManager$ProcessingRunnable.run(Unknown Source)
at java.desktop/java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.desktop/java.awt.EventQueue$4.run(Unknown Source)
at java.desktop/java.awt.EventQueue$4.run(Unknown Source)
at java.base/java.security.AccessController.doPrivileged(Unknown Source)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.desktop/java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.run(Unknown Source)
- n.vidziunas
- uib-Team
- Beiträge: 23
- Registriert: 17 Okt 2023, 14:38
Re: Opsi 4.3 - Fehler in "opsi-configed": class java.lang.String cannot be cast to class java.lang.Boolean
welche Ausgabe liefert den configState_getObjects RPC-Methode für software-on-demand?
Wenn es aus irgendeinem Grund Werte gibt, die nicht boolesche Werte sind (die boolesche Werte sein sollten), können Sie diese theoretisch manuell löschen.
Mit freundlichen Grüßen
Naglis Vidziunas
Vielen Dank für die Nutzung von opsi. Im Forum ist unser Support begrenzt.
Für den professionellen Einsatz und individuelle Beratung empfehlen wir einen Support-Vertrag und eine Schulung.
Gerne informieren wir Sie zu unserem Angebot.
uib GmbH
Telefon: +49 6131 27561 0
E-Mail: sales@uib.de
Re: Opsi 4.3 - Fehler in "opsi-configed": class java.lang.String cannot be cast to class java.lang.Boolean
Vorallem klärt es aber auch nicht, dass der Fehler nur bei einem der beiden OPSI-Depots auftritt, denn diese Variablen gelten ja eigentlich systemweit (Configuration-Server mit Master-Depot und den daran angeschlossenen Depot-Servern).
Ich weiß auch nicht, ob das Tool "opsi-configed" selbst noch irgendwo (lokal?) Konfigurationsdaten abspeichert, so dass der Fehler eventuell garnicht auf dem Server selbst auftaucht, sondern nur im Tool "opsi-configed" - wobei auch hier manches dagegen spricht, denn auf einem anderen System als meins, zeigt das "opsi-configed"-Tool den gleichen Fehler wie auf meinem System an.
Wahrscheinlich sind es auch andere Variablen, als die Software-on-Demand - aber die Logdatei liefert leider wenig aussagekräftiges an welcher Variable der Type-Cast letztendlich scheitert.
Re: Opsi 4.3 - Fehler in "opsi-configed": class java.lang.String cannot be cast to class java.lang.Boolean
jedenfalls habe ich 2 Einträge gefunden, die als value "False" bzw "True" enthalten - man beachte die Großschreibung, denn alle anderen Einträge werden eigentlich immer klein geschrieben (also "true" bzw. "false").
Ich vermute, dass er "True" bzw. "False" in Großschreibung nicht auf den Datentyp "boolean" anwenden kann, der "true" bzw. "false" (in Kleinschreibung) erlaubt?
Über das folgende Kommando hab ich die beiden besagten Einträge mit dem großen "False" bzw. "True" gefunden:
opsi-cli --attributes=all --output-format table jsonrpc execute configState_getObjects '[]' '{}'
configId │ ident │ objectId │ type │ values
software-on-demand.active │ software-on-demand.active;hati.kl.klippel.de │ hati.kl.klippel.de │ ConfigState │ False
software-on-demand.installation-now-button | software-on-demand.installation-now-button;hati.k… │ hati.kl.klippel.de │ ConfigState │ True
Re: Opsi 4.3 - Fehler in "opsi-configed": class java.lang.String cannot be cast to class java.lang.Boolean
Ich möchte die "values" für die folgenden beiden Einträge (siehe unten) von "False" auf "false" bzw. "True" auf "true" abändern (in der Hoffnung, dass damit das eingangs geschilderte Type-Casting-Problem behoben werden kann.
Vielleicht sieht das ja zufällig auch einer der OPSI-Entwickler und kann mir sagen, ob ich überhaupt auf dem richtigen Weg bin...
Es geht um folgende Einträge, abgerufen über folgende Kommandozeile:
opsi-cli --attributes=all --output-format table jsonrpc execute configState_getObjects '[]' '{}'
configId │ ident │ objectId │ type │ values
software-on-demand.active │ software-on-demand.active;hati.kl.klippel.de │ hati.kl.klippel.de │ ConfigState │ False
software-on-demand.installation-now-button | software-on-demand.installation-now-button;hati.k… │ hati.kl.klippel.de │ ConfigState │ True
- j.schneider
- uib-Team
- Beiträge: 2042
- Registriert: 29 Mai 2008, 15:14
Re: Opsi 4.3 - Fehler in "opsi-configed": class java.lang.String cannot be cast to class java.lang.Boolean
das Bearbeiten geht so:
Code: Alles auswählen
opsi-cli jsonrpc execute configState_updateObjects '{"type":"ConfigState","configId":"software-on-demand.active","objectId":"hati.kl.klippel.de","values":[true]}'
Jan Schneider
Vielen Dank für die Nutzung von opsi. Im Forum ist unser Support begrenzt.
Für den professionellen Einsatz und individuelle Beratung empfehlen wir einen Support-Vertrag und eine Schulung.
Gerne informieren wir Sie zu unserem Angebot.
uib GmbH
Telefon: +49 6131 27561 0
E-Mail: sales@uib.de
Re: Opsi 4.3 - Fehler in "opsi-configed": class java.lang.String cannot be cast to class java.lang.Boolean
Also nochmal zusammengefasst:
Aus noch unbekannten Gründen hatten bei uns 2 dieser "software-on-demand...." ConfigState-Variablen einen "falschen" Wert, bzw. eine falsche Schreibweise "True" statt "true" und "False" statt "false".
Das Tool "opsi-configed" konnte deshalb offenbar den Status dieser Variablen nicht korrekt auswerten (das Matching der Werte auf den Typ "boolean" misslang) und deshalb ist die "opsi-configed"-Oberfläche bei jedem Zugriff auf die software-on-demand Kategorie gescheitert - sowohl in der "Depot-Konfiguration" -> "Host-Parameter" -> "software-on-demand", als auch in der "Client-Konfiguration" -> "Host-Parameter" -> "software-on-demand".
Ich kann mich dunkel entsinnen, früher dieses groß geschriebene "True" und "False" auch im opsi-configed an den Properties mal gesehen zu haben (ohne das das Tool gemeckert hätte oder abgeschmiert wäre) - aber seit dem letzten Update hat das dann offenbar nicht mehr funktioniert.
Die Fehlermeldung im opsi-configed bzw. der Log-Datei ist an der Stelle leider auch etwas ungenau - Type-Casting auf boolean - ja, aber welche Variable das genau betrifft, steht nicht drin ("Unknown Source", bzw. man wird mit "in module java.base of loader 'bootstrap'... " auch auf eine falsche Fährte gebracht).
Zum Glück wusste ich noch von diesen unterschiedlichen Schreibweisen in den Werten, so dass ich von Anfang darauf aus war, diese zu suchen und zum Glück auch wieder gefunden habe.
Die opsi-cli ist ein tolles, sehr mächtiges Tool, leider ist die Doku noch recht rudimentär - es gibt nur ein paar kleine harmlose Beispiele, wie man ein paar Informationen anzeigen lassen kann - die tiefere Funktionsweise der Syntax muss man sich selber zusammen reimen.
Aber zum Glück lesen die Entwickler von UIB hier im Forum mit und können helfen

- n.vidziunas
- uib-Team
- Beiträge: 23
- Registriert: 17 Okt 2023, 14:38
Re: Opsi 4.3 - Fehler in "opsi-configed": class java.lang.String cannot be cast to class java.lang.Boolean
vielen Dank für Ihre gründlichen Tests, Ihren detaillierten Problembericht und Ihre Beiträge.
Wir haben das Logging verbessert und die Behandlung von booleschen Werten erweitert, um sicherzustellen, dass großgeschriebene Strings (z.B. „True“, „False“) nun korrekt erkannt werden. Diese Änderungen werden in der nächsten Version enthalten sein.
Mit freundlichen Grüßen
Naglis Vidziunas
Vielen Dank für die Nutzung von opsi. Im Forum ist unser Support begrenzt.
Für den professionellen Einsatz und individuelle Beratung empfehlen wir einen Support-Vertrag und eine Schulung.
Gerne informieren wir Sie zu unserem Angebot.
uib GmbH
Telefon: +49 6131 27561 0
E-Mail: sales@uib.de