Opsi 4.3 - Fehler in "opsi-configed": class java.lang.String cannot be cast to class java.lang.Boolean
Verfasst: 06 Mai 2025, 10:52
Offenbar seit dem Opsi 4.3 Update von der Version aus Ausgust 2024 auf März 2025 haben wir folgendes Problem:
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)
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)