wpilibsuite / shuffleboard

A modern dashboard for FRC
Other
79 stars 84 forks source link

CCE in loading CameraServer settings from saved layout JSON #773

Closed Starlight220 closed 1 year ago

Starlight220 commented 1 year ago
WARNING: Uncaught exception on JavaFX Application Thread
java.lang.ClassCastException: class com.google.gson.internal.LazilyParsedNumber cannot be cast to class java.lang.Integer (com.google.gson.internal.LazilyParsedNumber is in unnamed module of loader 'app'; java.lang.Integer is in module java.base of loader 'bootstrap')
    at edu.wpi.first.shuffleboard.plugin.cameraserver.widget.CameraServerWidget.applySettings(CameraServerWidget.java:165)
    at edu.wpi.first.shuffleboard.plugin.cameraserver.widget.CameraServerWidget.lambda$initialize$6(CameraServerWidget.java:126)
    at com.sun.javafx.binding.ExpressionHelper$Generic.fireValueChangedEvent(ExpressionHelper.java:360)
    at com.sun.javafx.binding.ExpressionHelper.fireValueChangedEvent(ExpressionHelper.java:80)
    at javafx.beans.property.ObjectPropertyBase.fireValueChangedEvent(ObjectPropertyBase.java:106)
    at javafx.beans.property.ObjectPropertyBase.markInvalid(ObjectPropertyBase.java:113)
    at javafx.beans.property.ObjectPropertyBase.set(ObjectPropertyBase.java:147)
    at edu.wpi.first.shuffleboard.api.widget.SingleSourceWidget.addSource(SingleSourceWidget.java:20)
    at edu.wpi.first.shuffleboard.app.json.WidgetSaver.deserialize(WidgetSaver.java:86)
    at edu.wpi.first.shuffleboard.app.json.WidgetSaver.deserialize(WidgetSaver.java:24)
    at edu.wpi.first.shuffleboard.api.json.ElementTypeAdapter.deserialize(ElementTypeAdapter.java:30)
    at com.google.gson.internal.bind.TreeTypeAdapter.read(TreeTypeAdapter.java:69)
    at com.google.gson.Gson.fromJson(Gson.java:888)
    at com.google.gson.Gson.fromJson(Gson.java:953)
    at com.google.gson.internal.bind.TreeTypeAdapter$GsonContextImpl.deserialize(TreeTypeAdapter.java:162)
    at edu.wpi.first.shuffleboard.app.json.WidgetPaneSaver.deserialize(WidgetPaneSaver.java:79)
    at edu.wpi.first.shuffleboard.app.json.WidgetPaneSaver.deserialize(WidgetPaneSaver.java:25)
    at edu.wpi.first.shuffleboard.api.json.ElementTypeAdapter.deserialize(ElementTypeAdapter.java:30)
    at com.google.gson.internal.bind.TreeTypeAdapter.read(TreeTypeAdapter.java:69)
    at com.google.gson.Gson.fromJson(Gson.java:888)
    at com.google.gson.Gson.fromJson(Gson.java:953)
    at com.google.gson.internal.bind.TreeTypeAdapter$GsonContextImpl.deserialize(TreeTypeAdapter.java:162)
    at edu.wpi.first.shuffleboard.app.json.DashboardTabPaneSaver.deserialize(DashboardTabPaneSaver.java:55)
    at edu.wpi.first.shuffleboard.app.json.DashboardTabPaneSaver.deserialize(DashboardTabPaneSaver.java:22)
    at edu.wpi.first.shuffleboard.api.json.ElementTypeAdapter.deserialize(ElementTypeAdapter.java:30)
    at com.google.gson.internal.bind.TreeTypeAdapter.read(TreeTypeAdapter.java:69)
    at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.read(ReflectiveTypeAdapterFactory.java:129)
    at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:220)
    at com.google.gson.Gson.fromJson(Gson.java:888)
    at com.google.gson.Gson.fromJson(Gson.java:826)
    at edu.wpi.first.shuffleboard.app.SaveFileHandler.load(SaveFileHandler.java:115)
    at edu.wpi.first.shuffleboard.app.MainWindowController.load(MainWindowController.java:254)
    at edu.wpi.first.shuffleboard.app.Shuffleboard.lambda$start$3(Shuffleboard.java:116)
    at com.sun.javafx.application.PlatformImpl.lambda$runLater$10(PlatformImpl.java:457)
    at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
    at com.sun.javafx.application.PlatformImpl.lambda$runLater$11(PlatformImpl.java:456)
    at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:96)
    at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
    at com.sun.glass.ui.win.WinApplication.lambda$runLoop$3(WinApplication.java:184)
    at java.base/java.lang.Thread.run(Thread.java:833)

(source: log file uploaded here -- note that this is with 2023.1.1)

Starlight220 commented 1 year ago

Moved to #781.

Original text

The log [here](https://github.com/wpilibsuite/shuffleboard/issues/770#issuecomment-1485491710) has this and more exceptions: ``` Mar 24, 2023 6:51:40 PM edu.wpi.first.shuffleboard.plugin.cameraserver.source.CameraServerSource lambda$new$5 WARNING: Could not get bandwidth VideoException [edu.wpi.first.cscore.VideoException: empty value] at edu.wpi.first.cscore.CameraServerJNI.getTelemetryAverageValue(Native Method) at edu.wpi.first.cscore.CameraServerJNI.getTelemetryAverageValue(CameraServerJNI.java:364) at edu.wpi.first.cscore.VideoSource.getActualDataRate(VideoSource.java:334) at edu.wpi.first.shuffleboard.plugin.cameraserver.source.CameraServerSource.lambda$new$5(CameraServerSource.java:139) Mar 24, 2023 6:51:40 PM edu.wpi.first.shuffleboard.plugin.cameraserver.source.CameraServerSource lambda$new$5 WARNING: Could not get framerate VideoException [edu.wpi.first.cscore.VideoException: empty value] at edu.wpi.first.cscore.CameraServerJNI.getTelemetryAverageValue(Native Method) at edu.wpi.first.cscore.CameraServerJNI.getTelemetryAverageValue(CameraServerJNI.java:364) at edu.wpi.first.cscore.VideoSource.getActualFPS(VideoSource.java:321) at edu.wpi.first.shuffleboard.plugin.cameraserver.source.CameraServerSource.lambda$new$5(CameraServerSource.java:145) ``` --- @PeterJohnson Now that I look at the API docs of those cscore methods, I see this warning: ``` *

CameraServerJNI#setTelemetryPeriod() must be called for this to be valid (throws * VisionException if telemetry is not enabled). ``` It appears that this might be what's happening here, despite that method being called here, after loading the native libs, when the plugin is loaded: https://github.com/wpilibsuite/shuffleboard/blob/69b2dc2e98c3aa34d5ac3aec6a692467d36db6e2/plugins/cameraserver/src/main/java/edu/wpi/first/shuffleboard/plugin/cameraserver/CameraServerPlugin.java#L57 Is it possible that one second isn't fast enough? What can cause this?