#24630 closed defect (fixed)
Toggling visibility of the UK Cadastral Parcels layer with Urban Eye 3D open crashed JOSM
| Reported by: | Owned by: | zkir | |
|---|---|---|---|
| Priority: | normal | Milestone: | |
| Component: | Plugin UrbanEye3D | Version: | |
| Keywords: | template_report | Cc: |
Description
What steps will reproduce the problem?
- Have the OSMUK Cadastral Parcels layer open and visible, and Bing Sat open and visible, but with a lower priroity
- Open Urban Eye 3D in a detached window
- Hide visibility of the OSMUK Cadastral Parcels layer
What is the expected result?
I can continue editing. Maybe the ground now appears from Bing Sat in Urban Eye 3D
What happens instead?
JOSM crashes with a null pointer exception (details below)
Please provide any additional information below. Attach a screenshot if possible.
Relative:URL: ^/trunk Repository:UUID: 0c6e7542-c601-0410-84e7-c038aed88b3b Last:Changed Date: 2026-01-31 13:00:34 +0100 (Sat, 31 Jan 2026) Revision:19481 Build-Date:2026-02-01 02:30:45 URL:https://josm.openstreetmap.de/svn/trunk Identification: JOSM/1.5 (19481 en_GB) Linux Debian GNU/Linux 13 (trixie) Memory Usage: 1056 MB / 11960 MB (49 MB allocated, but free) Java version: 21.0.10+7-Debian-1deb13u1, Debian, OpenJDK 64-Bit Server VM Look and Feel: javax.swing.plaf.metal.MetalLookAndFeel Screen: :0.0 1920x1080x[Multi depth]@60Hz (scaling 1.00×1.00) :0.1 1920x1080x[Multi depth]@60Hz (scaling 1.00×1.00) Maximum Screen Size: 1920×1080 Best cursor sizes: 16×16→16×16, 32×32→32×32 Environment variable LANG: en_GB.UTF-8 System property file.encoding: UTF-8 System property sun.jnu.encoding: UTF-8 Locale info: en_GB Numbers with default locale: 1234567890 -> 1234567890 Desktop environment: XFCE Java package: openjdk-21-jre:amd64-21.0.10+7-1~deb13u1 Java ATK Wrapper package: libatk-wrapper-java:all-0.40.0-3 libcommons-logging-java: libcommons-logging-java:all-1.3.0-2 fonts-noto: fonts-noto:all-20201225-2 VM arguments: [--module-path=/usr/share/openjfx/lib, --add-modules=java.scripting,java.sql,javafx.controls,javafx.media,javafx.swing,javafx.web, -Djosm.restart=true, -Djava.net.useSystemProxies=true, -XX:MaxRAMPercentage=75.0, --add-exports=java.base/sun.security.action=ALL-UNNAMED, --add-exports=java.desktop/com.sun.imageio.plugins.jpeg=ALL-UNNAMED, --add-exports=java.desktop/com.sun.imageio.spi=ALL-UNNAMED] Dataset consistency test: No problems found Plugins: + Mapillary (1816) + apache-commons (36474) + buildings_tools (36474) + jaxb (36474) + jogl (1.2.3) + log4j (36474) + measurement (36474) + terracer (36474) + todo (157) + urbaneye3d (1.8.0) + utilsplugin2 (36474) Tagging presets: + https://raw.githubusercontent.com/yopaseopor/traffic_signs_preset_JOSM/master/GB.zip + https://josm.openstreetmap.de/josmfile?page=Presets/ParkingLanes&zip=1 Map paint styles: + https://josm.openstreetmap.de/josmfile?page=Styles/Potlatch2&zip=1 + https://josm.openstreetmap.de/josmfile?page=Styles/ParkingLanes&zip=1 - https://josm.openstreetmap.de/josmfile?page=Styles/SimpleBuildingTags&zip=1 - https://josm.openstreetmap.de/josmfile?page=Styles/Surface&zip=1 - https://josm.openstreetmap.de/josmfile?page=Styles/Surface-DataEntry&zip=1 - https://josm.openstreetmap.de/josmfile?page=Styles/Enhanced_Lane_and_Road_Attributes&zip=1 - https://josm.openstreetmap.de/josmfile?page=Styles/Lane_and_Road_Attributes&zip=1 - https://josm.openstreetmap.de/josmfile?page=Styles/SimpleRoofTags&zip=1 - https://josm.openstreetmap.de/josmfile?page=Styles/FixmeAndNote&zip=1 - https://josm.openstreetmap.de/josmfile?page=Styles/Maxspeed&zip=1 - https://josm.openstreetmap.de/josmfile?page=Styles/Modified&zip=1 + https://josm.openstreetmap.de/josmfile?page=Styles/SidewalksPlus&zip=1 - https://raw.githubusercontent.com/yopaseopor/traffic_signs_style_JOSM/master/Styles_Traffic_signs_EUR_OC.zip - https://josm.openstreetmap.de/josmfile?page=Styles/Building_Levels_Labels&zip=1 - https://josm.openstreetmap.de/josmfile?page=Styles/Coloured_buildings_en&zip=1 - https://josm.openstreetmap.de/josmfile?page=Styles/Sidewalks&zip=1 - https://josm.openstreetmap.de/josmfile?page=Styles/SidewalksAndFootways&zip=1 Last errors/warnings: - 00153.751 W: java.io.IOException: Attribution is not loaded yet - 00153.752 W: java.io.IOException: Attribution is not loaded yet - 00153.752 W: java.io.IOException: Attribution is not loaded yet - 00153.752 W: java.io.IOException: Attribution is not loaded yet - 00153.753 W: java.io.IOException: Attribution is not loaded yet - 00153.753 W: java.io.IOException: Attribution is not loaded yet - 00153.753 W: java.io.IOException: Attribution is not loaded yet - 00153.753 W: java.io.IOException: Attribution is not loaded yet - 00153.754 W: java.io.IOException: Attribution is not loaded yet - 00190.567 E: Handled by bug report queue: java.lang.NullPointerException: Cannot invoke "String.isEmpty()" because the return value of "org.openstreetmap.josm.data.imagery.ImageryInfo.getId()" is null === REPORTED CRASH DATA === BugReportExceptionHandler#handleException: No data collected. Warning issued by: BugReportExceptionHandler#handleException === STACK TRACE === Thread: AWT-EventQueue-0 (35) of main java.lang.NullPointerException: Cannot invoke "String.isEmpty()" because the return value of "org.openstreetmap.josm.data.imagery.ImageryInfo.getId()" is null at ru.zkir.customtms.TileCache.validateImageryInfo(TileCache.java:111) at ru.zkir.customtms.MapRenderer.setCurrentImagery(MapRenderer.java:182) at ru.zkir.urbaneye3d.GroundPlane.update(GroundPlane.java:68) at ru.zkir.urbaneye3d.DialogWindow3D.propertyChange(DialogWindow3D.java:253) at java.desktop/java.beans.PropertyChangeSupport.fire(PropertyChangeSupport.java:343) at java.desktop/java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:335) at java.desktop/java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:268) at java.desktop/java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:310) at org.openstreetmap.josm.gui.layer.Layer.fireVisibleChanged(Layer.java:472) at org.openstreetmap.josm.gui.layer.Layer.setVisible(Layer.java:394) at org.openstreetmap.josm.gui.dialogs.LayerListDialog$LayerListModel.setValueAt(LayerListDialog.java:1153) at java.desktop/javax.swing.JTable.setValueAt(JTable.java:2793) at java.desktop/javax.swing.JTable.editingStopped(JTable.java:4791) at java.desktop/javax.swing.AbstractCellEditor.fireEditingStopped(AbstractCellEditor.java:152) at java.desktop/javax.swing.DefaultCellEditor$EditorDelegate.stopCellEditing(DefaultCellEditor.java:375) at java.desktop/javax.swing.DefaultCellEditor.stopCellEditing(DefaultCellEditor.java:234) at java.desktop/javax.swing.DefaultCellEditor$EditorDelegate.actionPerformed(DefaultCellEditor.java:392) at java.desktop/javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1972) at java.desktop/javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2314) at java.desktop/javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:407) at java.desktop/javax.swing.JToggleButton$ToggleButtonModel.setPressed(JToggleButton.java:411) at java.desktop/javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:279) at java.desktop/java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:299) at java.desktop/java.awt.Component.processMouseEvent(Component.java:6621) at java.desktop/javax.swing.JComponent.processMouseEvent(JComponent.java:3398) at java.desktop/java.awt.Component.processEvent(Component.java:6386) at java.desktop/java.awt.Container.processEvent(Container.java:2266) at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:4996) at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2324) at java.desktop/java.awt.Component.dispatchEvent(Component.java:4828) at java.desktop/javax.swing.plaf.basic.BasicTableUI$Handler.repostEvent(BasicTableUI.java:978) at java.desktop/javax.swing.plaf.basic.BasicTableUI$Handler.mouseReleased(BasicTableUI.java:1194) at java.desktop/java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:300) at java.desktop/java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:299) at java.desktop/java.awt.Component.processMouseEvent(Component.java:6621) at java.desktop/javax.swing.JComponent.processMouseEvent(JComponent.java:3398) at java.desktop/java.awt.Component.processEvent(Component.java:6386) at java.desktop/java.awt.Container.processEvent(Container.java:2266) at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:4996) at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2324) at java.desktop/java.awt.Component.dispatchEvent(Component.java:4828) at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4948) at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4575) at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4516) at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2310) at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2780) at java.desktop/java.awt.Component.dispatchEvent(Component.java:4828) at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:775) at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:720) at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:714) at java.base/java.security.AccessController.doPrivileged(AccessController.java:400) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:87) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:98) at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:747) at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:745) at java.base/java.security.AccessController.doPrivileged(AccessController.java:400) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:87) at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:744) 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)
Attachments (2)
Change History (16)
by , 3 weeks ago
| Attachment: | Screenshot_2026-02-09_21-12-11.png added |
|---|
comment:1 by , 3 weeks ago
Looking further at this, it seems that it is not an issue with the OSMUK Cadastral Parcels layer - I can turn that on and off with the Bing Sat layer inactive, and Esri active.
It seems to be when the Bing Sat layer becomes active, probably because the layer info appears to suggest that it has no ID.
comment:2 by , 3 weeks ago
Got JOSM crashing since UE3D added this layer rendering (weak GPU card). A specific plugin option tickbox to not add these layers below buildings, be it imagery or Carto would be great. Now I have to think of deselecting everything in the layer panel which then gives a black background in the edit window making orientation rather difficult.
comment:3 by , 3 weeks ago
Hello josm@... , thank you for this bug report.
Maybe I am missing something obvious, but what this "Bing Sat" layer is? how to activate it?
All I have is "Bing Aerial Imagery" and it does have ID.
Sharing of OSM file of your working area could also help.
comment:4 by , 3 weeks ago
| Owner: | changed from to |
|---|---|
| Status: | new → needinfo |
comment:5 by , 3 weeks ago
Some analysis reveals the following:
The problem has nothing to do with the "OSMUK Cadastral Parcels" layer.
The problem is with self-made(?) bing layer. The plugin needs layers to have IDs.
comment:6 by , 3 weeks ago
Ok, I've been trying to figure out what I've done here!
I have the following in my preferences.xml under preferences -> maps
<map>
<tag key='name' value='Bing Sat'/>
<tag key='type' value='bing'/>
<tag key='url' value='http://www.bing.com/maps/'/>
<tag key='customHttpHeaders' value='{}'/>
</map>
From what I can see, this is no different in theory to the "Bing aerial imagery", but the latter has a lot more options.
I don't know when I added "Bing Sat" (or if it even was me - but I suspect it was). But whenever it was added, it was not by manually modifying the preferences file - it would have been through the UI - which apparently allows them to be added without an ID.
I guess the question going forwards for Urban Eye 3D is can and should the lack of an ID be handled more gracefully.
Without knowing the code, my initial suggestions would be to either skip any imagery without an ID, or generate an ID (random UUID?) for use within Urban Eye 3D. Would these be possible?
comment:7 by , 3 weeks ago
| Owner: | changed from to |
|---|---|
| Status: | needinfo → assigned |
comment:8 by , 3 weeks ago
| Resolution: | → fixed |
|---|---|
| Status: | assigned → closed |
I think it could. I've found, that if satellite layer is configured manually (Menu->Edit-Preference->Imagery, one of the plus buttons), it does not have an id. There is no even a field to specify it, so we need to support this case.
This fix is available in the new version 1.8.1. Please let me know whether it works for you.
comment:9 by , 3 weeks ago
Yes. That's correct. The ID is only for referencing server generated layers (to remove/replace/update). ID is not needed for local layers. Usually the URL is used for these in case a reference is needed.
If I remember right there is also a function which either returns ID or URL.
comment:10 by , 3 weeks ago
@stoecker, thank you for the clarification. URL seems to be unique enough, so I can use it :)
comment:11 by , 3 weeks ago
This fix is available in the new version 1.8.1. Please let me know whether it works for you.
I've not yet been able to download this version via doing a JOSM plugin update, but will keep trying. Perhaps it takes a while to propagate
comment:12 by , 3 weeks ago
1.8.1 is released, but the file contains version 1.8.0 inside. Manifest was not updated ;-)



Visible layers before crash