java.lang.ClassCastException
Started toying with the JCivEd tool and encountered an error when trying to change the numerical value of an unit's X position. I found it discussed earlier in this thread but it seemed to have been reportedly addressed in the previous release of the editor, i.e., version 0.0.24. Changing the Unit's Type worked as expected and was accepted when reloading the saved game. There was no issue which is interesting because the pulldown menu for selecting the unit type (I assume) is an interface for the actual numerical value shown alongside the pulldown and that is used within the program. So, this seems to indicate (again, my assumption) a difference between how the two variables may be coded. Hope this info helps to find the root cause. Save & Map files attached. 100% repeatable using different Save files and system reboots.
| OS | Win 11 25H2 |
| MoBo | X870E |
| CPU | 9950X3D |
| Java |
| VERSION | 25.0.1 | | RUNTIME_VERSION | 25.0.1+8-LTS-27 | | MODULES | java.base java.compiler java.datatransfer java.xml java.prefs java.desktop java.instrument java.logging java.management java.security.sasl java.naming java.rmi java.management.rmi java.net.http java.scripting java.security.jgss java.transaction.xa java.sql java.sql.rowset java.xml.crypto java.se java.smartcardio jdk.accessibility jdk.internal.jvmstat jdk.attach jdk.charsets jdk.internal.opt jdk.zipfs jdk.compiler jdk.crypto.cryptoki jdk.crypto.ec jdk.crypto.mscapi jdk.dynalink jdk.internal.ed jdk.editpad jdk.internal.vm.ci jdk.graal.compiler jdk.graal.compiler.management jdk.hotspot.agent jdk.httpserver jdk.incubator.vector jdk.internal.le jdk.internal.md jdk.jartool jdk.javadoc jdk.jcmd jdk.management jdk.management.agent jdk.jconsole jdk.jdeps jdk.jdwp.agent jdk.jdi jdk.jfr jdk.jlink jdk.jpackage jdk.jshell jdk.jsobject jdk.jstatd jdk.localedata jdk.management.jfr jdk.naming.dns jdk.naming.rmi jdk.net jdk.nio.mapmode jdk.sctp jdk.security.auth jdk.security.jgss jdk.unsupported jdk.unsupported.desktop jdk.xml.dom |
|
| DosBox | 2025.12.01 |
| JCivEd | 0.0.25a |
Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: class java.lang.Long cannot be cast to class java.lang.Short (java.lang.Long and java.lang.Short are in module java.base of loader 'bootstrap')
at dd.commons.binary.bytemap.UnsignedByteMapping.valueToBytes(UnsignedByteMapping.java:26)
at dd.commons.binary.bytemap.AbstractMapping.setValue(AbstractMapping.java:102)
at dd.commons.binary.bytemap.ByteMapModel.setValueForId(ByteMapModel.java:89)
at dd.civ.data.game.model.sve.impl.ByteArraySVE.setValue(ByteArraySVE.java:169)
at dd.civ.data.game.model.sve.impl.CivDosGameState.setPropertyValue(CivDosGameState.java:298)
at dd.civ.data.game.model.generic.Entity.setPropertyValue(Entity.java:81)
at dd.civ.data.game.model.generic.Entity.setPropertyValue(Entity.java:81)
at dd.jcived.ui.components.generic.Field.propertyChange(Field.java:127)
at java.desktop/java.beans.PropertyChangeSupport.fire(PropertyChangeSupport.java:343)
at java.desktop/java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:336)
at java.desktop/java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:268)
at java.desktop/java.awt.Component.firePropertyChange(Component.java:8670)
at java.desktop/javax.swing.JFormattedTextField.setValue(JFormattedTextField.java:828)
at java.desktop/javax.swing.JFormattedTextField.commitEdit(JFormattedTextField.java:559)
at java.desktop/javax.swing.JFormattedTextField$FocusLostHandler.run(JFormattedTextField.java:677)
at java.desktop/javax.swing.JFormattedTextField.processFocusEvent(JFormattedTextField.java:659)
at java.desktop/java.awt.Component.processEvent(Component.java:6332)
at java.desktop/java.awt.Container.processEvent(Container.java:2260)
at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:4958)
at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2318)
at java.desktop/java.awt.Component.dispatchEvent(Component.java:4790)
at java.desktop/java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1829)
at java.desktop/java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:1061)
at java.desktop/java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:729)
at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:4839)
at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2318)
at java.desktop/java.awt.Component.dispatchEvent(Component.java:4790)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:725)
at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:702)
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)