Opening Omero images through Qupath

I want to access my images from Omero through Qupath but the error below is showing up. My Omero instance requires login before you can access its images and I am wondering if this causes the error. I tried viewing an image from IDR and it worked maybe because its public. The images that I tried to open are supported images by Qupath (.tiff, .jpg).

INFO: Bio-Formats version 6.3.0
INFO: Loaded extension Bio-Formats server options (Bio-Formats 6.3.0) (15 ms)
INFO: Loaded extension Experimental commands (17 ms)
INFO: Loaded extension ImageJ extension (32 ms)
INFO: Loaded extension JPen extension (17 ms)
INFO: Loaded extension OpenCV extensions (3 ms)
INFO: Loaded extension Rich script editor extension (395 ms)
INFO: OpenSlide version 3.4.1
INFO: Selected style: null
INFO: Performing update check...
WARN: No changelog found - will not check for updates
INFO: Starting QuPath with parameters: []
ERROR: Unable to connect to OMERO server
    at java.base/sun.security.ssl.Alert.createSSLException(Unknown Source)
    at java.base/sun.security.ssl.Alert.createSSLException(Unknown Source)
    at java.base/sun.security.ssl.TransportContext.fatal(Unknown Source)
    at java.base/sun.security.ssl.Alert$AlertConsumer.consume(Unknown Source)
    at java.base/sun.security.ssl.TransportContext.dispatch(Unknown Source)
    at java.base/sun.security.ssl.SSLTransport.decode(Unknown Source)
    at java.base/sun.security.ssl.SSLSocketImpl.decode(Unknown Source)
    at java.base/sun.security.ssl.SSLSocketImpl.readHandshakeRecord(Unknown Source)
    at java.base/sun.security.ssl.SSLSocketImpl.startHandshake(Unknown Source)
    at java.base/sun.net.www.protocol.https.HttpsClient.afterConnect(Unknown Source)
    at java.base/sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(Unknown Source)
    at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream0(Unknown Source)
    at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
    at java.base/sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(Unknown Source)
    at qupath.lib.images.servers.omero.OmeroWebImageServerBuilder$OmeroWebClient.getJSONString(OmeroWebImageServerBuilder.java:357)
    at qupath.lib.images.servers.omero.OmeroWebImageServerBuilder$OmeroWebClient.parseJSON(OmeroWebImageServerBuilder.java:365)
    at qupath.lib.images.servers.omero.OmeroWebImageServerBuilder$OmeroWebClient.loadURLs(OmeroWebImageServerBuilder.java:246)
    at qupath.lib.images.servers.omero.OmeroWebImageServerBuilder$OmeroWebClient.create(OmeroWebImageServerBuilder.java:259)
    at qupath.lib.images.servers.omero.OmeroWebImageServerBuilder.supportLevel(OmeroWebImageServerBuilder.java:160)
    at qupath.lib.images.servers.omero.OmeroWebImageServerBuilder.checkImageSupport(OmeroWebImageServerBuilder.java:140)
    at qupath.lib.images.servers.ImageServerProvider.getServerBuilders(ImageServerProvider.java:172)
    at qupath.lib.images.servers.ImageServerProvider.buildServer(ImageServerProvider.java:220)
    at qupath.lib.gui.QuPathGUI.openImage(QuPathGUI.java:2528)
    at qupath.lib.gui.QuPathGUI.openImage(QuPathGUI.java:2427)
    at qupath.lib.gui.commands.OpenCommand.run(OpenCommand.java:51)
    at qupath.lib.gui.QuPathGUI.lambda$createCommandAction$53(QuPathGUI.java:3531)
    at org.controlsfx.control.action.Action.handle(Action.java:419)
    at org.controlsfx.control.action.Action.handle(Action.java:64)
    at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:86)
    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238)
    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
    at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
    at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:49)
    at javafx.event.Event.fireEvent(Event.java:198)
    at javafx.scene.control.MenuItem.fire(MenuItem.java:459)
    at com.sun.javafx.scene.control.ContextMenuContent$MenuItemContainer.doSelect(ContextMenuContent.java:1380)
    at com.sun.javafx.scene.control.ContextMenuContent$MenuItemContainer.lambda$createChildren$12(ContextMenuContent.java:1333)
    at com.sun.javafx.event.CompositeEventHandler$NormalEventHandlerRecord.handleBubblingEvent(CompositeEventHandler.java:218)
    at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:80)
    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238)
    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)
    at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59)
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
    at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
    at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:54)
    at javafx.event.Event.fireEvent(Event.java:198)
    at javafx.scene.Scene$MouseHandler.process(Scene.java:3862)
    at javafx.scene.Scene.processMouseEvent(Scene.java:1849)
    at javafx.scene.Scene$ScenePeerListener.mouseEvent(Scene.java:2590)
    at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:409)
    at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:299)
    at java.base/java.security.AccessController.doPrivileged(Unknown Source)
    at com.sun.javafx.tk.quantum.GlassViewEventHandler.lambda$handleMouseEvent$2(GlassViewEventHandler.java:447)
    at com.sun.javafx.tk.quantum.QuantumToolkit.runWithoutRenderLock(QuantumToolkit.java:412)
    at com.sun.javafx.tk.quantum.GlassViewEventHandler.handleMouseEvent(GlassViewEventHandler.java:446)
    at com.sun.glass.ui.View.handleMouseEvent(View.java:556)
    at com.sun.glass.ui.View.notifyMouse(View.java:942)
    at com.sun.glass.ui.gtk.GtkApplication._runLoop(Native Method)
    at com.sun.glass.ui.gtk.GtkApplication.lambda$runLoop$11(GtkApplication.java:277)
    at java.base/java.lang.Thread.run(Unknown Source)
WARN: Unable to build server: Unable to build ImageServer for https://hostname.example.com/iviewer/?images=2&dataset=2 (args=[])
ERROR: Open image: Unable to build a whole slide server for https://hostname.example.com/iviewer/?images=2&dataset=2 (Unable to build ImageServer for https://hostname.example.com/iviewer/?images=2&dataset=2 (args=[]))
ERROR: QuPath exception
    at java.base/java.net.URI$Parser.parse(Unknown Source)
    at java.base/java.net.URI.<init>(Unknown Source)
    at java.base/java.net.URI.create(Unknown Source)
    at qupath.lib.images.servers.omero.OmeroWebImageServerBuilder$OmeroWebClient.keepAlive(OmeroWebImageServerBuilder.java:318)
    at qupath.lib.images.servers.omero.OmeroWebImageServerBuilder$OmeroWebClient$1.run(OmeroWebImageServerBuilder.java:223)
    at java.base/java.util.TimerThread.mainLoop(Unknown Source)
    at java.base/java.util.TimerThread.run(Unknown Source)
ERROR: Unable to build whole slide server - check your classpath for a suitable library (e.g. OpenSlide, BioFormats)
	
ERROR: /home/user/Downloads/QuPath-0.2.0-m8/lib/app/qupath-0.2.0-m8.jar:/home/user/Downloads/QuPath-0.2.0-m8/lib/app/javafx-swing-13.0.1-linux.jar:/home/user/Downloads/QuPath-0.2.0-m8/lib/app/reactfx-2.0-M5.jar:/home/user/Downloads/QuPath-0.2.0-m8/lib/app/jfxtras-menu-10.0-r1.jar:/home/user/Downloads/QuPath-0.2.0-m8/lib/app/wellbehavedfx-0.3.3.jar:/home/user/Downloads/QuPath-0.2.0-m8/lib/app/javafx-controls-13.0.1-linux.jar:/home/user/Downloads/QuPath-0.2.0-m8/lib/app/groovy-2.5.8.jar:/home/user/Downloads/QuPath-0.2.0-m8/lib/app/jpen-2-150301.jar:/home/user/Downloads/QuPath-0.2.0-m8/lib/app/javafx-controls-13.0.1.jar:/home/user/Downloads/QuPath-0.2.0-m8/lib/app/javafx-base-13.0.1-linux.jar:/home/user/Downloads/QuPath-0.2.0-m8/lib/app/javafx-web-13.0.1-linux.jar:/home/user/Downloads/QuPath-0.2.0-m8/lib/app/failureaccess-1.0.1.jar:/home/user/Downloads/QuPath-0.2.0-m8/lib/app/qupath-extension-processing-0.2.0-m8.jar:/home/user/Downloads/QuPath-0.2.0-m8/lib/app/bioformats_package-6.3.0.jar:/home/user/Downloads/QuPath-0.2.0-m8/lib/app/flowless-0.6.jar:/home/user/Downloads/QuPath-0.2.0-m8/lib/app/javafx-swing-13.0.1.jar:/home/user/Downloads/QuPath-0.2.0-m8/lib/app/commons-math3-3.6.1.jar:/home/user/Downloads/QuPath-0.2.0-m8/lib/app/qupath-core-0.2.0-m8.jar:/home/user/Downloads/QuPath-0.2.0-m8/lib/app/jpen-2-150301-natives-linux.jar:/home/user/Downloads/QuPath-0.2.0-m8/lib/app/javafx-graphics-13.0.1-linux.jar:/home/user/Downloads/QuPath-0.2.0-m8/lib/app/guava-28.1-jre.jar:/home/user/Downloads/QuPath-0.2.0-m8/lib/app/javafx-media-13.0.1.jar:/home/user/Downloads/QuPath-0.2.0-m8/lib/app/logback-classic-1.2.3.jar:/home/user/Downloads/QuPath-0.2.0-m8/lib/app/gson-2.8.6.jar:/home/user/Downloads/QuPath-0.2.0-m8/lib/app/javafx-graphics-13.0.1.jar:/home/user/Downloads/QuPath-0.2.0-m8/lib/app/qupath-extension-openslide-0.2.0-m8.jar:/home/user/Downloads/QuPath-0.2.0-m8/lib/app/qupath-gui-fx-0.2.0-m8.jar:/home/user/Downloads/QuPath-0.2.0-m8/lib/app/javafx-base-13.0.1.jar:/home/user/Downloads/QuPath-0.2.0-m8/lib/app/qupath-extension-omero-0.2.0-m8.jar:/home/user/Downloads/QuPath-0.2.0-m8/lib/app/groovy-jsr223-2.5.8.jar:/home/user/Downloads/QuPath-0.2.0-m8/lib/app/openslide-3.4.1_2.jar:/home/user/Downloads/QuPath-0.2.0-m8/lib/app/opencv-4.1.2-1.5.2-linux-x86_64.jar:/home/user/Downloads/QuPath-0.2.0-m8/lib/app/logback-core-1.2.3.jar:/home/user/Downloads/QuPath-0.2.0-m8/lib/app/javafx-web-13.0.1.jar:/home/user/Downloads/QuPath-0.2.0-m8/lib/app/qupath-core-processing-0.2.0-m8.jar:/home/user/Downloads/QuPath-0.2.0-m8/lib/app/jts-core-1.16.1.jar:/home/user/Downloads/QuPath-0.2.0-m8/lib/app/controlsfx-11.0.0.jar:/home/user/Downloads/QuPath-0.2.0-m8/lib/app/javacpp-1.5.2.jar:/home/user/Downloads/QuPath-0.2.0-m8/lib/app/ij-1.52r.jar:/home/user/Downloads/QuPath-0.2.0-m8/lib/app/slf4j-api-1.7.25.jar:/home/user/Downloads/QuPath-0.2.0-m8/lib/app/qupath-extension-pen-0.2.0-m8.jar:/home/user/Downloads/QuPath-0.2.0-m8/lib/app/qupath-extension-script-editor-0.2.0-m8.jar:/home/user/Downloads/QuPath-0.2.0-m8/lib/app/richtextfx-0.10.2.jar:/home/user/Downloads/QuPath-0.2.0-m8/lib/app/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar:/home/user/Downloads/QuPath-0.2.0-m8/lib/app/openslide-3.4.1_2-natives-linux.jar:/home/user/Downloads/QuPath-0.2.0-m8/lib/app/openblas-0.3.7-1.5.2.jar:/home/user/Downloads/QuPath-0.2.0-m8/lib/app/undofx-2.1.0.jar:/home/user/Downloads/QuPath-0.2.0-m8/lib/app/qupath-experimental-0.2.0-m8.jar:/home/user/Downloads/QuPath-0.2.0-m8/lib/app/qupath-extension-bioformats-0.2.0-m8.jar:/home/user/Downloads/QuPath-0.2.0-m8/lib/app/jfxtras-common-10.0-r1.jar:/home/user/Downloads/QuPath-0.2.0-m8/lib/app/openblas-0.3.7-1.5.2-linux-x86_64.jar:/home/user/Downloads/QuPath-0.2.0-m8/lib/app/opencv-4.1.2-1.5.2.jar:/home/user/Downloads/QuPath-0.2.0-m8/lib/app/javafx-media-13.0.1-linux.jar
ERROR: QuPath exception
    at qupath.lib.images.servers.ImageServerProvider.buildServer(ImageServerProvider.java:243)
    at qupath.lib.gui.QuPathGUI.openImage(QuPathGUI.java:2528)
    at qupath.lib.gui.QuPathGUI.openImage(QuPathGUI.java:2427)
    at qupath.lib.gui.commands.OpenCommand.run(OpenCommand.java:51)
    at qupath.lib.gui.QuPathGUI.lambda$createCommandAction$53(QuPathGUI.java:3531)
    at org.controlsfx.control.action.Action.handle(Action.java:419)
    at org.controlsfx.control.action.Action.handle(Action.java:64)
    at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:86)
    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238)
    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
    at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
    at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:49)
    at javafx.event.Event.fireEvent(Event.java:198)
    at javafx.scene.control.MenuItem.fire(MenuItem.java:459)
    at com.sun.javafx.scene.control.ContextMenuContent$MenuItemContainer.doSelect(ContextMenuContent.java:1380)
    at com.sun.javafx.scene.control.ContextMenuContent$MenuItemContainer.lambda$createChildren$12(ContextMenuContent.java:1333)
    at com.sun.javafx.event.CompositeEventHandler$NormalEventHandlerRecord.handleBubblingEvent(CompositeEventHandler.java:218)
    at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:80)
    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238)
    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)
    at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59)
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
    at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
    at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:54)
    at javafx.event.Event.fireEvent(Event.java:198)
    at javafx.scene.Scene$MouseHandler.process(Scene.java:3862)
    at javafx.scene.Scene.processMouseEvent(Scene.java:1849)
    at javafx.scene.Scene$ScenePeerListener.mouseEvent(Scene.java:2590)
    at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:409)
    at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:299)
    at java.base/java.security.AccessController.doPrivileged(Unknown Source)
    at com.sun.javafx.tk.quantum.GlassViewEventHandler.lambda$handleMouseEvent$2(GlassViewEventHandler.java:447)
    at com.sun.javafx.tk.quantum.QuantumToolkit.runWithoutRenderLock(QuantumToolkit.java:412)
    at com.sun.javafx.tk.quantum.GlassViewEventHandler.handleMouseEvent(GlassViewEventHandler.java:446)
    at com.sun.glass.ui.View.handleMouseEvent(View.java:556)
    at com.sun.glass.ui.View.notifyMouse(View.java:942)
    at com.sun.glass.ui.gtk.GtkApplication._runLoop(Native Method)
    at com.sun.glass.ui.gtk.GtkApplication.lambda$runLoop$11(GtkApplication.java:277)
    at java.base/java.lang.Thread.run(Unknown Source)
ERROR: Open image: Illegal character in query at index 94: https://hostname.example.com/iviewer/?images=2&dataset=undefined&x=19817&y=9792&zm=10&c=1|0:255$FF0000,2|0:255$00FF00,3|0:255$0000FF&m=c&maps=[{"inverted":{"enabled":false},"quantization":{"family":"linear","coefficient":1}},{"inverted":{"enabled":false},"quantization":{"family":"linear","coefficient":1}},{"inverted":{"enabled":false},"quantization":{"family":"linear","coefficient":1}}]
INFO: Preferences have been reset
INFO: Preferences have been reset
ERROR: Unable to build whole slide server - check your classpath for a suitable library (e.g. OpenSlide, BioFormats)
	
ERROR: /home/user/Downloads/QuPath-0.2.0-m8/lib/app/qupath-0.2.0-m8.jar:/home/user/Downloads/QuPath-0.2.0-m8/lib/app/javafx-swing-13.0.1-linux.jar:/home/user/Downloads/QuPath-0.2.0-m8/lib/app/reactfx-2.0-M5.jar:/home/user/Downloads/QuPath-0.2.0-m8/lib/app/jfxtras-menu-10.0-r1.jar:/home/user/Downloads/QuPath-0.2.0-m8/lib/app/wellbehavedfx-0.3.3.jar:/home/user/Downloads/QuPath-0.2.0-m8/lib/app/javafx-controls-13.0.1-linux.jar:/home/user/Downloads/QuPath-0.2.0-m8/lib/app/groovy-2.5.8.jar:/home/user/Downloads/QuPath-0.2.0-m8/lib/app/jpen-2-150301.jar:/home/user/Downloads/QuPath-0.2.0-m8/lib/app/javafx-controls-13.0.1.jar:/home/user/Downloads/QuPath-0.2.0-m8/lib/app/javafx-base-13.0.1-linux.jar:/home/user/Downloads/QuPath-0.2.0-m8/lib/app/javafx-web-13.0.1-linux.jar:/home/user/Downloads/QuPath-0.2.0-m8/lib/app/failureaccess-1.0.1.jar:/home/user/Downloads/QuPath-0.2.0-m8/lib/app/qupath-extension-processing-0.2.0-m8.jar:/home/user/Downloads/QuPath-0.2.0-m8/lib/app/bioformats_package-6.3.0.jar:/home/user/Downloads/QuPath-0.2.0-m8/lib/app/flowless-0.6.jar:/home/user/Downloads/QuPath-0.2.0-m8/lib/app/javafx-swing-13.0.1.jar:/home/user/Downloads/QuPath-0.2.0-m8/lib/app/commons-math3-3.6.1.jar:/home/user/Downloads/QuPath-0.2.0-m8/lib/app/qupath-core-0.2.0-m8.jar:/home/user/Downloads/QuPath-0.2.0-m8/lib/app/jpen-2-150301-natives-linux.jar:/home/user/Downloads/QuPath-0.2.0-m8/lib/app/javafx-graphics-13.0.1-linux.jar:/home/user/Downloads/QuPath-0.2.0-m8/lib/app/guava-28.1-jre.jar:/home/user/Downloads/QuPath-0.2.0-m8/lib/app/javafx-media-13.0.1.jar:/home/user/Downloads/QuPath-0.2.0-m8/lib/app/logback-classic-1.2.3.jar:/home/user/Downloads/QuPath-0.2.0-m8/lib/app/gson-2.8.6.jar:/home/user/Downloads/QuPath-0.2.0-m8/lib/app/javafx-graphics-13.0.1.jar:/home/user/Downloads/QuPath-0.2.0-m8/lib/app/qupath-extension-openslide-0.2.0-m8.jar:/home/user/Downloads/QuPath-0.2.0-m8/lib/app/qupath-gui-fx-0.2.0-m8.jar:/home/user/Downloads/QuPath-0.2.0-m8/lib/app/javafx-base-13.0.1.jar:/home/user/Downloads/QuPath-0.2.0-m8/lib/app/qupath-extension-omero-0.2.0-m8.jar:/home/user/Downloads/QuPath-0.2.0-m8/lib/app/groovy-jsr223-2.5.8.jar:/home/user/Downloads/QuPath-0.2.0-m8/lib/app/openslide-3.4.1_2.jar:/home/user/Downloads/QuPath-0.2.0-m8/lib/app/opencv-4.1.2-1.5.2-linux-x86_64.jar:/home/user/Downloads/QuPath-0.2.0-m8/lib/app/logback-core-1.2.3.jar:/home/user/Downloads/QuPath-0.2.0-m8/lib/app/javafx-web-13.0.1.jar:/home/user/Downloads/QuPath-0.2.0-m8/lib/app/qupath-core-processing-0.2.0-m8.jar:/home/user/Downloads/QuPath-0.2.0-m8/lib/app/jts-core-1.16.1.jar:/home/user/Downloads/QuPath-0.2.0-m8/lib/app/controlsfx-11.0.0.jar:/home/user/Downloads/QuPath-0.2.0-m8/lib/app/javacpp-1.5.2.jar:/home/user/Downloads/QuPath-0.2.0-m8/lib/app/ij-1.52r.jar:/home/user/Downloads/QuPath-0.2.0-m8/lib/app/slf4j-api-1.7.25.jar:/home/user/Downloads/QuPath-0.2.0-m8/lib/app/qupath-extension-pen-0.2.0-m8.jar:/home/user/Downloads/QuPath-0.2.0-m8/lib/app/qupath-extension-script-editor-0.2.0-m8.jar:/home/user/Downloads/QuPath-0.2.0-m8/lib/app/richtextfx-0.10.2.jar:/home/user/Downloads/QuPath-0.2.0-m8/lib/app/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar:/home/user/Downloads/QuPath-0.2.0-m8/lib/app/openslide-3.4.1_2-natives-linux.jar:/home/user/Downloads/QuPath-0.2.0-m8/lib/app/openblas-0.3.7-1.5.2.jar:/home/user/Downloads/QuPath-0.2.0-m8/lib/app/undofx-2.1.0.jar:/home/user/Downloads/QuPath-0.2.0-m8/lib/app/qupath-experimental-0.2.0-m8.jar:/home/user/Downloads/QuPath-0.2.0-m8/lib/app/qupath-extension-bioformats-0.2.0-m8.jar:/home/user/Downloads/QuPath-0.2.0-m8/lib/app/jfxtras-common-10.0-r1.jar:/home/user/Downloads/QuPath-0.2.0-m8/lib/app/openblas-0.3.7-1.5.2-linux-x86_64.jar:/home/user/Downloads/QuPath-0.2.0-m8/lib/app/opencv-4.1.2-1.5.2.jar:/home/user/Downloads/QuPath-0.2.0-m8/lib/app/javafx-media-13.0.1-linux.jar
ERROR: QuPath exception
    at qupath.lib.images.servers.ImageServerProvider.buildServer(ImageServerProvider.java:243)
    at qupath.lib.gui.QuPathGUI.openImage(QuPathGUI.java:2528)
    at qupath.lib.gui.QuPathGUI.openImage(QuPathGUI.java:2427)
    at qupath.lib.gui.commands.OpenCommand.run(OpenCommand.java:51)
    at qupath.lib.gui.QuPathGUI.lambda$createCommandAction$53(QuPathGUI.java:3531)
    at org.controlsfx.control.action.Action.handle(Action.java:419)
    at org.controlsfx.control.action.Action.handle(Action.java:64)
    at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:86)
    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238)
    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
    at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
    at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:49)
    at javafx.event.Event.fireEvent(Event.java:198)
    at javafx.scene.control.MenuItem.fire(MenuItem.java:459)
    at com.sun.javafx.scene.control.ContextMenuContent$MenuItemContainer.doSelect(ContextMenuContent.java:1380)
    at com.sun.javafx.scene.control.ContextMenuContent$MenuItemContainer.lambda$createChildren$12(ContextMenuContent.java:1333)
    at com.sun.javafx.event.CompositeEventHandler$NormalEventHandlerRecord.handleBubblingEvent(CompositeEventHandler.java:218)
    at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:80)
    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238)
    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)
    at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59)
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
    at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
    at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:54)
    at javafx.event.Event.fireEvent(Event.java:198)
    at javafx.scene.Scene$MouseHandler.process(Scene.java:3862)
    at javafx.scene.Scene.processMouseEvent(Scene.java:1849)
    at javafx.scene.Scene$ScenePeerListener.mouseEvent(Scene.java:2590)
    at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:409)
    at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:299)
    at java.base/java.security.AccessController.doPrivileged(Unknown Source)
    at com.sun.javafx.tk.quantum.GlassViewEventHandler.lambda$handleMouseEvent$2(GlassViewEventHandler.java:447)
    at com.sun.javafx.tk.quantum.QuantumToolkit.runWithoutRenderLock(QuantumToolkit.java:412)
    at com.sun.javafx.tk.quantum.GlassViewEventHandler.handleMouseEvent(GlassViewEventHandler.java:446)
    at com.sun.glass.ui.View.handleMouseEvent(View.java:556)
    at com.sun.glass.ui.View.notifyMouse(View.java:942)
    at com.sun.glass.ui.gtk.GtkApplication._runLoop(Native Method)
    at com.sun.glass.ui.gtk.GtkApplication.lambda$runLoop$11(GtkApplication.java:277)
    at java.base/java.lang.Thread.run(Unknown Source)

This appears to be the same error as Unable to build a whole slide server in Qupath
Without being able to test it myself on your specific server I’m afraid I don’t feel I can be of much help, perhaps someone else with access to a non-public OMERO server and QuPath may be able to assist further.

Answer to Opening Omero images through Qupath

Hi @petebankhead and @imagemed

I have tried to reproduce the error with QuPath you are having, and have some information. First, the error appears as you report it if I have an OMERO.server which has no connection to the outside world (e.g. firewalled inside an institution). See [1].

Second, I have a success in opening the link to the idr0018 data. See https://omero-guides.readthedocs.io/en/latest/qupath/docs/qupath.html - sorry for the raw state of that walkthrough, this is a bit of a work in progress.

Third, I have a success in opening a link to an identical type of ndpi images as in the IDR server in a non-IDR server, which is publicly available (the login url is public), see the screenshots in https://omero-guides.readthedocs.io/en/latest/qupath/docs/qupath.html. I have simply re-imported the same data which are in the IDR into that “outreach” server and then successfully opened the images such as the one in Pete’s link from that “outreach” server, after successfully negotiating the credentials dialog. This works fine, as well as all the other ndpi images in the idr0018 study.

Fourth, I have a failure with any other type of images than the ndpi slides. Both on the IDR (no creds public server) as well as “outreach” (creds only, but login url is public). The failure happens with e.g. http://idr.openmicroscopy.org/webclient/img_detail/3125701/?dataset=451 - this is a tiff image. See error below at [2].

So I do not think the problem is whether or not the OMERO.server is protected by credentials, but rather whether or not it is firewalled.

Further, all you can open at the moment on any OMERO.server using QuPath is (according to my testing) the npdi format. But, I have tested only the idr0018 ndpi images so far. The other formats, including tiff, fail with [2].

Hope this helps

All the best

Petr

OME Team

[1] (firewalled OMERO.server)

ERROR: Unable to connect to OMERO server
    at java.base/sun.security.ssl.Alert.createSSLException(Unknown Source)
    at java.base/sun.security.ssl.TransportContext.fatal(Unknown Source)
    at java.base/sun.security.ssl.TransportContext.fatal(Unknown Source)
    at java.base/sun.security.ssl.TransportContext.fatal(Unknown Source)
    at java.base/sun.security.ssl.CertificateMessage$T12CertificateConsumer.checkServerCerts(Unknown Source)
    at java.base/sun.security.ssl.CertificateMessage$T12CertificateConsumer.onCertificate(Unknown Source)
    at java.base/sun.security.ssl.CertificateMessage$T12CertificateConsumer.consume(Unknown Source)
    at java.base/sun.security.ssl.SSLHandshake.consume(Unknown Source)
    at java.base/sun.security.ssl.HandshakeContext.dispatch(Unknown Source)
    at java.base/sun.security.ssl.HandshakeContext.dispatch(Unknown Source)
    at java.base/sun.security.ssl.TransportContext.dispatch(Unknown Source)
    at java.base/sun.security.ssl.SSLTransport.decode(Unknown Source)
    at java.base/sun.security.ssl.SSLSocketImpl.decode(Unknown Source)
    at java.base/sun.security.ssl.SSLSocketImpl.readHandshakeRecord(Unknown Source)
    at java.base/sun.security.ssl.SSLSocketImpl.startHandshake(Unknown Source)
    at java.base/sun.net.www.protocol.https.HttpsClient.afterConnect(Unknown Source)
    at java.base/sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(Unknown Source)
    at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream0(Unknown Source)
    at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
    at java.base/sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(Unknown Source)
    at qupath.lib.images.servers.omero.OmeroWebImageServerBuilder$OmeroWebClient.getJSONString(OmeroWebImageServerBuilder.java:357)
    at qupath.lib.images.servers.omero.OmeroWebImageServerBuilder$OmeroWebClient.parseJSON(OmeroWebImageServerBuilder.java:365)
    at qupath.lib.images.servers.omero.OmeroWebImageServerBuilder$OmeroWebClient.loadURLs(OmeroWebImageServerBuilder.java:246)
    at qupath.lib.images.servers.omero.OmeroWebImageServerBuilder$OmeroWebClient.create(OmeroWebImageServerBuilder.java:259)
    at qupath.lib.images.servers.omero.OmeroWebImageServerBuilder.supportLevel(OmeroWebImageServerBuilder.java:160)
    at qupath.lib.images.servers.omero.OmeroWebImageServerBuilder.checkImageSupport(OmeroWebImageServerBuilder.java:140)
    at qupath.lib.images.servers.ImageServerProvider.getServerBuilders(ImageServerProvider.java:172)
    at qupath.lib.images.servers.ImageServerProvider.buildServer(ImageServerProvider.java:220)
    at qupath.lib.gui.QuPathGUI.openImage(QuPathGUI.java:2528)
    at qupath.lib.gui.QuPathGUI.openImage(QuPathGUI.java:2427)
    at qupath.lib.gui.commands.OpenCommand.run(OpenCommand.java:51)
    at qupath.lib.gui.QuPathGUI.lambda$createCommandAction$53(QuPathGUI.java:3531)
    at org.controlsfx.control.action.Action.handle(Action.java:419)
    at org.controlsfx.control.action.Action.handle(Action.java:64)
    at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:86)
    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238)
    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
    at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
    at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:49)
    at javafx.event.Event.fireEvent(Event.java:198)
    at javafx.scene.control.MenuItem.fire(MenuItem.java:459)
    at com.sun.javafx.scene.control.GlobalMenuAdapter.lambda$bindMenuItemProperties$2(GlobalMenuAdapter.java:153)
    at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:86)
    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238)
    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
    at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
    at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:54)
    at javafx.event.Event.fireEvent(Event.java:198)
    at javafx.scene.control.MenuItem.fire(MenuItem.java:459)
    at com.sun.javafx.tk.quantum.GlassSystemMenu$1.action(GlassSystemMenu.java:234)
  Caused by PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target        at java.base/sun.security.validator.PKIXValidator.doBuild(Unknown Source)
        at java.base/sun.security.validator.PKIXValidator.engineValidate(Unknown Source)
        at java.base/sun.security.validator.Validator.validate(Unknown Source)
        at java.base/sun.security.ssl.X509TrustManagerImpl.checkTrusted(Unknown Source)
        at java.base/sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(Unknown Source)
        at java.base/sun.security.ssl.CertificateMessage$T12CertificateConsumer.checkServerCerts(Unknown Source)
        at java.base/sun.security.ssl.CertificateMessage$T12CertificateConsumer.onCertificate(Unknown Source)
        at java.base/sun.security.ssl.CertificateMessage$T12CertificateConsumer.consume(Unknown Source)
        at java.base/sun.security.ssl.SSLHandshake.consume(Unknown Source)
        at java.base/sun.security.ssl.HandshakeContext.dispatch(Unknown Source)
        at java.base/sun.security.ssl.HandshakeContext.dispatch(Unknown Source)
        at java.base/sun.security.ssl.TransportContext.dispatch(Unknown Source)
        at java.base/sun.security.ssl.SSLTransport.decode(Unknown Source)
        at java.base/sun.security.ssl.SSLSocketImpl.decode(Unknown Source)
        at java.base/sun.security.ssl.SSLSocketImpl.readHandshakeRecord(Unknown Source)
        at java.base/sun.security.ssl.SSLSocketImpl.startHandshake(Unknown Source)
        at java.base/sun.net.www.protocol.https.HttpsClient.afterConnect(Unknown Source)
        at java.base/sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(Unknown Source)
        at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream0(Unknown Source)
        at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
        at java.base/sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(Unknown Source)
        at qupath.lib.images.servers.omero.OmeroWebImageServerBuilder$OmeroWebClient.getJSONString(OmeroWebImageServerBuilder.java:357)
        at qupath.lib.images.servers.omero.OmeroWebImageServerBuilder$OmeroWebClient.parseJSON(OmeroWebImageServerBuilder.java:365)
        at qupath.lib.images.servers.omero.OmeroWebImageServerBuilder$OmeroWebClient.loadURLs(OmeroWebImageServerBuilder.java:246)
        at qupath.lib.images.servers.omero.OmeroWebImageServerBuilder$OmeroWebClient.create(OmeroWebImageServerBuilder.java:259)
        at qupath.lib.images.servers.omero.OmeroWebImageServerBuilder.supportLevel(OmeroWebImageServerBuilder.java:160)
        at qupath.lib.images.servers.omero.OmeroWebImageServerBuilder.checkImageSupport(OmeroWebImageServerBuilder.java:140)
        at qupath.lib.images.servers.ImageServerProvider.getServerBuilders(ImageServerProvider.java:172)
        at qupath.lib.images.servers.ImageServerProvider.buildServer(ImageServerProvider.java:220)
        at qupath.lib.gui.QuPathGUI.openImage(QuPathGUI.java:2528)
        at qupath.lib.gui.QuPathGUI.openImage(QuPathGUI.java:2427)
        at qupath.lib.gui.commands.OpenCommand.run(OpenCommand.java:51)
        at qupath.lib.gui.QuPathGUI.lambda$createCommandAction$53(QuPathGUI.java:3531)
        at org.controlsfx.control.action.Action.handle(Action.java:419)
        at org.controlsfx.control.action.Action.handle(Action.java:64)
        at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:86)
        at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238)
        at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)
        at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
        at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
        at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
        at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:49)
        at javafx.event.Event.fireEvent(Event.java:198)
        at javafx.scene.control.MenuItem.fire(MenuItem.java:459)
        at com.sun.javafx.scene.control.GlobalMenuAdapter.lambda$bindMenuItemProperties$2(GlobalMenuAdapter.java:153)
        at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:86)
        at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238)
        at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)
        at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
        at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
        at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
        at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:54)
        at javafx.event.Event.fireEvent(Event.java:198)
        at javafx.scene.control.MenuItem.fire(MenuItem.java:459)
        at com.sun.javafx.tk.quantum.GlassSystemMenu$1.action(GlassSystemMenu.java:234)
WARN: Unable to build server: Unable to build ImageServer for https://ome-training-4.openmicroscopy.org/webclient/img_detail/50993/?dataset=4395 (args=[])
ERROR: Open image: Unable to build a whole slide server for https://ome-training-4.openmicroscopy.org/webclient/img_detail/50993/?dataset=4395 (Unable to build ImageServer for https://ome-training-4.openmicroscopy.org/webclient/img_detail/50993/?dataset=4395 (args=[]))
ERROR: Unable to build whole slide server - check your classpath for a suitable library (e.g. OpenSlide, BioFormats)
    
ERROR: /Applications/QuPath-0.2.0-m8.app/Contents/app/qupath-0.2.0-m8.jar:/Applications/QuPath-0.2.0-m8.app/Contents/app/bioformats_package-6.3.0.jar:/Applications/QuPath-0.2.0-m8.app/Contents/app/gson-2.8.6.jar:/Applications/QuPath-0.2.0-m8.app/Contents/app/ij-1.52r.jar:/Applications/QuPath-0.2.0-m8.app/Contents/app/javafx-graphics-13.0.1-mac.jar:/Applications/QuPath-0.2.0-m8.app/Contents/app/qupath-core-0.2.0-m8.jar:/Applications/QuPath-0.2.0-m8.app/Contents/app/javafx-swing-13.0.1-mac.jar:/Applications/QuPath-0.2.0-m8.app/Contents/app/flowless-0.6.jar:/Applications/QuPath-0.2.0-m8.app/Contents/app/openblas-0.3.7-1.5.2.jar:/Applications/QuPath-0.2.0-m8.app/Contents/app/undofx-2.1.0.jar:/Applications/QuPath-0.2.0-m8.app/Contents/app/slf4j-api-1.7.25.jar:/Applications/QuPath-0.2.0-m8.app/Contents/app/jfxtras-menu-10.0-r1.jar:/Applications/QuPath-0.2.0-m8.app/Contents/app/javafx-swing-13.0.1.jar:/Applications/QuPath-0.2.0-m8.app/Contents/app/logback-classic-1.2.3.jar:/Applications/QuPath-0.2.0-m8.app/Contents/app/failureaccess-1.0.1.jar:/Applications/QuPath-0.2.0-m8.app/Contents/app/openblas-0.3.7-1.5.2-macosx-x86_64.jar:/Applications/QuPath-0.2.0-m8.app/Contents/app/reactfx-2.0-M5.jar:/Applications/QuPath-0.2.0-m8.app/Contents/app/qupath-core-processing-0.2.0-m8.jar:/Applications/QuPath-0.2.0-m8.app/Contents/app/qupath-extension-omero-0.2.0-m8.jar:/Applications/QuPath-0.2.0-m8.app/Contents/app/opencv-4.1.2-1.5.2-macosx-x86_64.jar:/Applications/QuPath-0.2.0-m8.app/Contents/app/javacpp-1.5.2.jar:/Applications/QuPath-0.2.0-m8.app/Contents/app/qupath-gui-fx-0.2.0-m8.jar:/Applications/QuPath-0.2.0-m8.app/Contents/app/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar:/Applications/QuPath-0.2.0-m8.app/Contents/app/qupath-extension-pen-0.2.0-m8.jar:/Applications/QuPath-0.2.0-m8.app/Contents/app/commons-math3-3.6.1.jar:/Applications/QuPath-0.2.0-m8.app/Contents/app/javafx-web-13.0.1.jar:/Applications/QuPath-0.2.0-m8.app/Contents/app/groovy-2.5.8.jar:/Applications/QuPath-0.2.0-m8.app/Contents/app/qupath-extension-bioformats-0.2.0-m8.jar:/Applications/QuPath-0.2.0-m8.app/Contents/app/logback-core-1.2.3.jar:/Applications/QuPath-0.2.0-m8.app/Contents/app/qupath-experimental-0.2.0-m8.jar:/Applications/QuPath-0.2.0-m8.app/Contents/app/groovy-jsr223-2.5.8.jar:/Applications/QuPath-0.2.0-m8.app/Contents/app/jts-core-1.16.1.jar:/Applications/QuPath-0.2.0-m8.app/Contents/app/javafx-media-13.0.1.jar:/Applications/QuPath-0.2.0-m8.app/Contents/app/openslide-3.4.1_2-natives-osx.jar:/Applications/QuPath-0.2.0-m8.app/Contents/app/javafx-base-13.0.1-mac.jar:/Applications/QuPath-0.2.0-m8.app/Contents/app/richtextfx-0.10.2.jar:/Applications/QuPath-0.2.0-m8.app/Contents/app/javafx-media-13.0.1-mac.jar:/Applications/QuPath-0.2.0-m8.app/Contents/app/javafx-graphics-13.0.1.jar:/Applications/QuPath-0.2.0-m8.app/Contents/app/jfxtras-common-10.0-r1.jar:/Applications/QuPath-0.2.0-m8.app/Contents/app/opencv-4.1.2-1.5.2.jar:/Applications/QuPath-0.2.0-m8.app/Contents/app/javafx-controls-13.0.1.jar:/Applications/QuPath-0.2.0-m8.app/Contents/app/javafx-web-13.0.1-mac.jar:/Applications/QuPath-0.2.0-m8.app/Contents/app/javafx-base-13.0.1.jar:/Applications/QuPath-0.2.0-m8.app/Contents/app/jpen-2-150301-natives-osx.jar:/Applications/QuPath-0.2.0-m8.app/Contents/app/qupath-extension-script-editor-0.2.0-m8.jar:/Applications/QuPath-0.2.0-m8.app/Contents/app/jpen-2-150301.jar:/Applications/QuPath-0.2.0-m8.app/Contents/app/guava-28.1-jre.jar:/Applications/QuPath-0.2.0-m8.app/Contents/app/qupath-extension-processing-0.2.0-m8.jar:/Applications/QuPath-0.2.0-m8.app/Contents/app/openslide-3.4.1_2.jar:/Applications/QuPath-0.2.0-m8.app/Contents/app/qupath-extension-openslide-0.2.0-m8.jar:/Applications/QuPath-0.2.0-m8.app/Contents/app/javafx-controls-13.0.1-mac.jar:/Applications/QuPath-0.2.0-m8.app/Contents/app/controlsfx-11.0.0.jar:/Applications/QuPath-0.2.0-m8.app/Contents/app/wellbehavedfx-0.3.3.jar
ERROR: QuPath exception
    at qupath.lib.images.servers.ImageServerProvider.buildServer(ImageServerProvider.java:243)
    at qupath.lib.gui.QuPathGUI.openImage(QuPathGUI.java:2528)
    at qupath.lib.gui.QuPathGUI.openImage(QuPathGUI.java:2427)
    at qupath.lib.gui.commands.OpenCommand.run(OpenCommand.java:51)
    at qupath.lib.gui.QuPathGUI.lambda$createCommandAction$53(QuPathGUI.java:3531)
    at org.controlsfx.control.action.Action.handle(Action.java:419)
    at org.controlsfx.control.action.Action.handle(Action.java:64)
    at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:86)
    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238)
    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
    at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
    at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:49)
    at javafx.event.Event.fireEvent(Event.java:198)
    at javafx.scene.control.MenuItem.fire(MenuItem.java:459)
    at com.sun.javafx.scene.control.GlobalMenuAdapter.lambda$bindMenuItemProperties$2(GlobalMenuAdapter.java:153)
    at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:86)
    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238)
    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
    at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
    at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:54)
    at javafx.event.Event.fireEvent(Event.java:198)
    at javafx.scene.control.MenuItem.fire(MenuItem.java:459)
    at com.sun.javafx.tk.quantum.GlassSystemMenu$1.action(GlassSystemMenu.java:234)

[2] (tiff format from IDR)

ERROR: QuPath exception: Index -1 out of bounds for length 0
    at qupath.lib.images.servers.AbstractImageServer.getDefaultThumbnail(AbstractImageServer.java:314)
    at qupath.lib.display.ImageDisplay$HistogramManager.lambda$getRequiredImages$0(ImageDisplay.java:833)
    at java.base/java.util.stream.IntPipeline$1$1.accept(Unknown Source)
    at java.base/java.util.stream.Streams$RangeIntSpliterator.forEachRemaining(Unknown Source)
    at java.base/java.util.Spliterator$OfInt.forEachRemaining(Unknown Source)
    at java.base/java.util.stream.AbstractPipeline.copyInto(Unknown Source)
    at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source)
    at java.base/java.util.stream.ReduceOps$ReduceTask.doLeaf(Unknown Source)
    at java.base/java.util.stream.ReduceOps$ReduceTask.doLeaf(Unknown Source)
    at java.base/java.util.stream.AbstractTask.compute(Unknown Source)
    at java.base/java.util.concurrent.CountedCompleter.exec(Unknown Source)
    at java.base/java.util.concurrent.ForkJoinTask.doExec(Unknown Source)
    at java.base/java.util.concurrent.ForkJoinTask.doInvoke(Unknown Source)
    at java.base/java.util.concurrent.ForkJoinTask.invoke(Unknown Source)
    at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateParallel(Unknown Source)
    at java.base/java.util.stream.AbstractPipeline.evaluate(Unknown Source)
    at java.base/java.util.stream.ReferencePipeline.collect(Unknown Source)
    at qupath.lib.display.ImageDisplay$HistogramManager.getRequiredImages(ImageDisplay.java:838)
    at qupath.lib.display.ImageDisplay$HistogramManager.ensureChannels(ImageDisplay.java:878)
    at qupath.lib.display.ImageDisplay.updateHistogramMap(ImageDisplay.java:573)
    at qupath.lib.display.ImageDisplay.setImageData(ImageDisplay.java:144)
    at qupath.lib.gui.viewer.QuPathViewer.setImageData(QuPathViewer.java:1475)
    at qupath.lib.gui.QuPathGUI.openImage(QuPathGUI.java:2549)
    at qupath.lib.gui.QuPathGUI.openImage(QuPathGUI.java:2427)
    at qupath.lib.gui.commands.OpenCommand.run(OpenCommand.java:51)
    at qupath.lib.gui.QuPathGUI.lambda$createCommandAction$53(QuPathGUI.java:3531)
    at org.controlsfx.control.action.Action.handle(Action.java:419)
    at org.controlsfx.control.action.Action.handle(Action.java:64)
    at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:86)
    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238)
    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
    at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
    at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:49)
    at javafx.event.Event.fireEvent(Event.java:198)
    at javafx.scene.control.MenuItem.fire(MenuItem.java:459)
    at com.sun.javafx.scene.control.GlobalMenuAdapter.lambda$bindMenuItemProperties$2(GlobalMenuAdapter.java:153)
    at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:86)
    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238)
    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
    at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
    at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:54)
    at javafx.event.Event.fireEvent(Event.java:198)
    at javafx.scene.control.MenuItem.fire(MenuItem.java:459)
    at com.sun.javafx.tk.quantum.GlassSystemMenu$1.action(GlassSystemMenu.java:234)
4 Likes

Thanks @pwalczysko for looking into this!
I believe the TIFF bug should be fixed with this commit: https://github.com/petebankhead/qupath/commits/pete-m9

QuPath should work with any RGB image through OMERO, although not necessarily other kinds (since to my knowledge I can’t get raw pixels through the web API). Before the fix, it required that the images had subresolutions - but this was a bug.

None of the QuPath-OMERO code has been tested very thoroughly because (sadly…) I am not actively working with images through OMERO at the moment. I have a faint memory there may be an issue with logging out over time, but I’m not certain. If either of you encounter this and have any tips for improving matters please do let me know.

Finally, is the remaining issue concerning the firewall is something that can be improved in QuPath or not?

Either way, really nice to see QuPath appearing in OMERO docs :smiley:

Thank you for this information! I already made the TCP ports 4063 (unsecured), 4064 (SSL), 80 (HTTP), 443 (HTTPS) available upon the installation of my OMERO server. I set the availability of the ports in the firewall configuration in my OMERO server using iptables and exposed the ports in my AWS OMERO instance. Is there any other way to disable the firewall of my OMERO instance?

@imagemed Sorry, we had just one more look at “my” error vs “your” error and found out that they are not identical after all, unlike I was claiming. Sorry about this.

I think there are 2 things to try

  1. try to connect to your OMERO server using another client, for example OMERO.insight (https://omero-guides.readthedocs.io/en/latest/upload/docs/import-desktop-client.html)
  2. there are lines in your error saying
    URI$Parser.parse(Unknown Source)
    and
    https://hostname.example.com/iviewer/?images=2&dataset=2` ` (args=[])

Did you edit those lines in your error before pasting the error here ?
Or if not, then this suggests that the url you are pasting to QuPath is invalid ?

All the best

Petr

OME Team

1 Like

I can access my server through Omero insight. And yes, I edited the url for privacy purposes.

@petebankhead @imagemed

Hi both, I was just wondering if you could profit in your QuPath - OMERO testing/explorations by our demo server https://www.openmicroscopy.org/explore/ - if you apply for an account there, this will give you immediately an OMERO.server which you can upload testing data to and is not firewalled.

All the best

Petr
OME Team

2 Likes

Hi all

I am facing the same problem.
Could anyone find a solution yet?
I followed this guide too:

My OMERO link (it’s a ndpi file, copied from the address bar of the iviewer in the webclient):

https://omero.biozentrum.unibas.ch/iviewer/?images=1271589&dataset=37411

I get this (same) error log:

INFO: Bio-Formats version 6.3.0
INFO: Loaded extension Bio-Formats server options (Bio-Formats 6.3.0) (18 ms)
INFO: Loaded extension Experimental commands (21 ms)
INFO: Loaded extension ImageJ extension (58 ms)
INFO: Loaded extension JPen extension (20 ms)
INFO: Loaded extension OpenCV extensions (4 ms)
INFO: Loaded extension Rich script editor extension (381 ms)
INFO: OpenSlide version 3.4.1
INFO: Selected style: null
INFO: Performing update check...
WARN: No changelog found - will not check for updates
INFO: Starting QuPath with parameters: []
ERROR: Unable to connect to OMERO server
    at java.base/sun.security.ssl.Alert.createSSLException(Unknown Source)
    at java.base/sun.security.ssl.Alert.createSSLException(Unknown Source)
    at java.base/sun.security.ssl.TransportContext.fatal(Unknown Source)
    at java.base/sun.security.ssl.Alert$AlertConsumer.consume(Unknown Source)
    at java.base/sun.security.ssl.TransportContext.dispatch(Unknown Source)
    at java.base/sun.security.ssl.SSLTransport.decode(Unknown Source)
    at java.base/sun.security.ssl.SSLSocketImpl.decode(Unknown Source)
    at java.base/sun.security.ssl.SSLSocketImpl.readHandshakeRecord(Unknown Source)
    at java.base/sun.security.ssl.SSLSocketImpl.startHandshake(Unknown Source)
    at java.base/sun.net.www.protocol.https.HttpsClient.afterConnect(Unknown Source)
    at java.base/sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(Unknown Source)
    at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream0(Unknown Source)
    at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
    at java.base/sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(Unknown Source)
    at qupath.lib.images.servers.omero.OmeroWebImageServerBuilder$OmeroWebClient.getJSONString(OmeroWebImageServerBuilder.java:357)
    at qupath.lib.images.servers.omero.OmeroWebImageServerBuilder$OmeroWebClient.parseJSON(OmeroWebImageServerBuilder.java:365)
    at qupath.lib.images.servers.omero.OmeroWebImageServerBuilder$OmeroWebClient.loadURLs(OmeroWebImageServerBuilder.java:246)
    at qupath.lib.images.servers.omero.OmeroWebImageServerBuilder$OmeroWebClient.create(OmeroWebImageServerBuilder.java:259)
    at qupath.lib.images.servers.omero.OmeroWebImageServerBuilder.supportLevel(OmeroWebImageServerBuilder.java:160)
    at qupath.lib.images.servers.omero.OmeroWebImageServerBuilder.checkImageSupport(OmeroWebImageServerBuilder.java:140)
    at qupath.lib.images.servers.ImageServerProvider.getServerBuilders(ImageServerProvider.java:172)
    at qupath.lib.images.servers.ImageServerProvider.buildServer(ImageServerProvider.java:220)
    at qupath.lib.gui.QuPathGUI.openImage(QuPathGUI.java:2528)
    at qupath.lib.gui.QuPathGUI.openImage(QuPathGUI.java:2427)
    at qupath.lib.gui.commands.OpenCommand.run(OpenCommand.java:51)
    at qupath.lib.gui.QuPathGUI.lambda$createCommandAction$53(QuPathGUI.java:3531)
    at org.controlsfx.control.action.Action.handle(Action.java:419)
    at org.controlsfx.control.action.Action.handle(Action.java:64)
    at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:86)
    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238)
    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
    at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
    at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:49)
    at javafx.event.Event.fireEvent(Event.java:198)
    at javafx.scene.control.MenuItem.fire(MenuItem.java:459)
    at com.sun.javafx.scene.control.GlobalMenuAdapter.lambda$bindMenuItemProperties$2(GlobalMenuAdapter.java:153)
    at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:86)
    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238)
    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
    at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
    at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:54)
    at javafx.event.Event.fireEvent(Event.java:198)
    at javafx.scene.control.MenuItem.fire(MenuItem.java:459)
    at com.sun.javafx.tk.quantum.GlassSystemMenu$1.action(GlassSystemMenu.java:234)
WARN: Unable to build server: Unable to build ImageServer for https://omero.biozentrum.unibas.ch/iviewer/?images=1271589&dataset=37411 (args=[])
ERROR: Open image: Unable to build a whole slide server for https://omero.biozentrum.unibas.ch/iviewer/?images=1271589&dataset=37411 (Unable to build ImageServer for https://omero.biozentrum.unibas.ch/iviewer/?images=1271589&dataset=37411 (args=[]))
ERROR: QuPath exception
    at java.base/java.net.URI$Parser.parse(Unknown Source)
    at java.base/java.net.URI.<init>(Unknown Source)
    at java.base/java.net.URI.create(Unknown Source)
    at qupath.lib.images.servers.omero.OmeroWebImageServerBuilder$OmeroWebClient.keepAlive(OmeroWebImageServerBuilder.java:318)
    at qupath.lib.images.servers.omero.OmeroWebImageServerBuilder$OmeroWebClient$1.run(OmeroWebImageServerBuilder.java:223)
    at java.base/java.util.TimerThread.mainLoop(Unknown Source)
    at java.base/java.util.TimerThread.run(Unknown Source)

I’m using QuPath-0.2.0-m8 and the OMERO server is running version 5.4.10 (which cannot be updated yet in our case). The links and logs are not edited.

I can open the image from the idr too.
Further, I can open the image from our OMERO server with another program: Orbit, which is probably more dedicated to work with databases like OMERO.

Hi @loicsauteur.
Thanks for giving us the precise link to your image. I tried myself to load your image into my QuPath, and I am getting

INFO: Bio-Formats version 6.3.0
INFO: Loaded extension Bio-Formats server options (Bio-Formats 6.3.0) (17 ms)
INFO: Loaded extension Experimental commands (28 ms)
INFO: Loaded extension ImageJ extension (59 ms)
INFO: Loaded extension JPen extension (30 ms)
INFO: Loaded extension OpenCV extensions (5 ms)
INFO: Loaded extension Rich script editor extension (418 ms)
INFO: OpenSlide version 3.4.1
INFO: Selected style: null
INFO: Performing update check...
WARN: No changelog found - will not check for updates
INFO: Starting QuPath with parameters: []
ERROR: Unable to connect to OMERO server
    at java.base/sun.nio.ch.Net.connect0(Native Method)
    at java.base/sun.nio.ch.Net.connect(Unknown Source)
    at java.base/sun.nio.ch.Net.connect(Unknown Source)
    at java.base/sun.nio.ch.NioSocketImpl.connect(Unknown Source)
    at java.base/java.net.SocksSocketImpl.connect(Unknown Source)
    at java.base/java.net.Socket.connect(Unknown Source)
    at java.base/sun.security.ssl.SSLSocketImpl.connect(Unknown Source)
    at java.base/sun.security.ssl.BaseSSLSocketImpl.connect(Unknown Source)
    at java.base/sun.net.NetworkClient.doConnect(Unknown Source)
    at java.base/sun.net.www.http.HttpClient.openServer(Unknown Source)
    at java.base/sun.net.www.http.HttpClient.openServer(Unknown Source)
    at java.base/sun.net.www.protocol.https.HttpsClient.<init>(Unknown Source)
    at java.base/sun.net.www.protocol.https.HttpsClient.New(Unknown Source)
    at java.base/sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.getNewHttpClient(Unknown Source)
    at java.base/sun.net.www.protocol.http.HttpURLConnection.plainConnect0(Unknown Source)
    at java.base/sun.net.www.protocol.http.HttpURLConnection.plainConnect(Unknown Source)
    at java.base/sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(Unknown Source)
    at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream0(Unknown Source)
    at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
    at java.base/sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(Unknown Source)
    at qupath.lib.images.servers.omero.OmeroWebImageServerBuilder$OmeroWebClient.getJSONString(OmeroWebImageServerBuilder.java:357)
    at qupath.lib.images.servers.omero.OmeroWebImageServerBuilder$OmeroWebClient.parseJSON(OmeroWebImageServerBuilder.java:365)
    at qupath.lib.images.servers.omero.OmeroWebImageServerBuilder$OmeroWebClient.loadURLs(OmeroWebImageServerBuilder.java:246)
    at qupath.lib.images.servers.omero.OmeroWebImageServerBuilder$OmeroWebClient.create(OmeroWebImageServerBuilder.java:259)
    at qupath.lib.images.servers.omero.OmeroWebImageServerBuilder.supportLevel(OmeroWebImageServerBuilder.java:160)
    at qupath.lib.images.servers.omero.OmeroWebImageServerBuilder.checkImageSupport(OmeroWebImageServerBuilder.java:140)
    at qupath.lib.images.servers.ImageServerProvider.getServerBuilders(ImageServerProvider.java:172)
    at qupath.lib.images.servers.ImageServerProvider.buildServer(ImageServerProvider.java:220)
    at qupath.lib.gui.QuPathGUI.openImage(QuPathGUI.java:2528)
    at qupath.lib.gui.QuPathGUI.openImage(QuPathGUI.java:2427)
    at qupath.lib.gui.commands.OpenCommand.run(OpenCommand.java:51)
    at qupath.lib.gui.QuPathGUI.lambda$createCommandAction$53(QuPathGUI.java:3531)
    at org.controlsfx.control.action.Action.handle(Action.java:419)
    at org.controlsfx.control.action.Action.handle(Action.java:64)
    at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:86)
    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238)
    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
    at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
    at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:49)
    at javafx.event.Event.fireEvent(Event.java:198)
    at javafx.scene.control.MenuItem.fire(MenuItem.java:459)
    at com.sun.javafx.scene.control.GlobalMenuAdapter.lambda$bindMenuItemProperties$2(GlobalMenuAdapter.java:153)
    at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:86)
    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238)
    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
    at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
    at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:54)
    at javafx.event.Event.fireEvent(Event.java:198)
    at javafx.scene.control.MenuItem.fire(MenuItem.java:459)
    at com.sun.javafx.tk.quantum.GlassSystemMenu$1.action(GlassSystemMenu.java:234)
WARN: Unable to build server: Unable to build ImageServer for https://omero.biozentrum.unibas.ch/iviewer/?images=1271589&dataset=37411 (args=[])
ERROR: Open image: Unable to build a whole slide server for https://omero.biozentrum.unibas.ch/iviewer/?images=1271589&dataset=37411 (Unable to build ImageServer for https://omero.biozentrum.unibas.ch/iviewer/?images=1271589&dataset=37411 (args=[]))
ERROR: QuPath exception
    at java.base/java.net.URI$Parser.parse(Unknown Source)
    at java.base/java.net.URI.<init>(Unknown Source)
    at java.base/java.net.URI.create(Unknown Source)
    at qupath.lib.images.servers.omero.OmeroWebImageServerBuilder$OmeroWebClient.keepAlive(OmeroWebImageServerBuilder.java:318)
    at qupath.lib.images.servers.omero.OmeroWebImageServerBuilder$OmeroWebClient$1.run(OmeroWebImageServerBuilder.java:223)
    at java.base/java.util.TimerThread.mainLoop(Unknown Source)
    at java.base/java.util.TimerThread.run(Unknown Source)

The QuPath part at the bottom seems the same for me and you. But the top is a bit different. I am just putting it here for the info, and we will come back to this soon.

Till then

All the best

Petr

OME Team

@loicsauteur @pwalczysko I don’t seem able to connect to https://omero.biozentrum.unibas.ch at all, but the handshake error is probably this one: https://github.com/qupath/qupath/issues/436

Summary: the stripped-down Java Runtime Environment with QuPath v0.2.0-m* is missing something that turns out to be important here. Changes in m10 will hopefully resolve this soon…

@loicsauteur @pwalczysko I don’t seem able to connect to https://omero.biozentrum.unibas.ch

Me neither, actually. Thanks @petebankhead for pointing out this simple test. Again, retested with our server which is not firewalled, and all worked fine. Great you will attempt to fix the handshake error.

@loicsauteur The only thing I could suggest at this moment would be - you could try to check if you can do your connection to our demo server, see how in Opening Omero images through Qupath

Good luck and thanks

Petr

@petebankhead and @pwalczysko

You won’t be able to connect to our OMERO server, we can only connect within our network (with VPN connection). I’m sorry, I forgot to mention that. I also don’t know if it is firewalled, but I would assume so (I lack the understanding of those things…)

I created an account on your demo server, uploaded an image and could open this image in QuPath successfully.
FYI: the OMERO iViewer address I used:

https://ome-demoserver.openmicroscopy.org/webclient/img_detail/120015/?dataset=4003

It would be fantastic if the next QuPath milestone could resolve the this problem!

I’m also interested in saving ROIs from QuPath back to OMERO. However, the github link to the code is missing in the “Analyze OMERO data using QuPath” documentation (very last step #5).

Thank you both!

@loicsauteur Great to hear that you are successful with the demo server. Feel free to use the demo server to explore the QuPath & OMERO workflow further.

Sorry about the missing ROI saving feature. We were intending to explore this, but never came to it. Actually, it could be rather explored as a future feature of QuPath, @petebankhead ? We will adjust the workflow https://omero-guides.readthedocs.io/en/latest/qupath/docs/qupath.html accordingly: it is a bit of a work in progress, sorry about that.

Thanks a lot for your confirmation, testing and suggestions.

All the best

Petr

@loicsauteur can you try again with QuPath v0.2.0-m10? That has resolved all the handshake errors I know of at this point…

@pwalczysko being able to exchange ROIs would be great, and I know @mwicks is also very interested in this. I think the biggest questions are:

  • what kinds of ROIs can / could OMERO support?
  • what format should they be exchanged in?
  • how should different ROI versions/users be handled?

I’ve written how QuPath now supports GeoJSON, and various related ROI representations here. It would be wonderful if this could be used as the basis of the exchange, rather than needing to add a converter to QuPath into some other representation.

1 Like

It works! Fantastic! @petebankhead Thanks a lot!
Looking forward to the ROI saving to OMERO…

3 Likes

@petebankhead : Congratulations for solving the SSL problem.

To answer your questions

Great that QuPath supports GeoJSON. It remains to be seen what is the quickest path here with lowest cost/benefit ratio for all sides.

@petebankhead @loicsauteur @mwicks Regarding a tool which can be tested/used by both of you, we have now a command-line based tool for handling OME-XML ROIs in OMERO. https://github.com/glencoesoftware/ome-omero-roitool. Note also the subdirectory https://github.com/glencoesoftware/ome-omero-roitool/tree/master/QuPath.scripts in that repo where you can find specific QuPath export and import scripts between QuPath and OME-XML ROI format. In https://github.com/glencoesoftware/ome-omero-roitool tools are provided which will allow you to import/export ROIs in OME-XML format to and from OMERO. The tool will attach these ROIs to an image in OMERO. You pass the ID of that image in OMERO to the tool as a parameter. The OME-XML ROIs can be product of the scripts https://github.com/glencoesoftware/ome-omero-roitool/tree/master/QuPath.scripts, thus making it possible to transfer ROIs from QuPath to OMERO and vice versa. This is a fairly new tool, but we did some initial testing on the IDR repository and the results are encouraging. Feel free to test and use yourself please. We will test further ourselves and we will add this workflow into the QuPath omero-guide https://omero-guides.readthedocs.io/en/latest/qupath/docs/qupath.html .

Hope this helps

All the best

Petr

4 Likes

Thank You Guys you really just saved my Day tenfold :slight_smile:

1 Like

@pwalczysko thanks for all the info!

Quick update, QuPath v0.2.0-m12 should support adding images to a project:

  • Through URLs created with the ‘link’ button (which can include multiple images)
  • Through URLs for a project or dataset (in which case they are all added)
  • With ROIs - using the Import objects option; this also works with ImageJ TIFFs

Screenshot 2020-05-21 at 08.09.07

@pwalczysko am I correct in thinking that it isn’t possible to send ROIs from QuPath to OMERO via the JSON API? I’m basing that on this section of the docs.

Edit: should also have mentioned @melvingelbard who made most of the improvements :slight_smile:

1 Like

Hi @petebankhead - You are correct, that JSON API doesn’t allow saving of ROIs. Everything there is using the omero-marshal library to map from OMERO objects to JSON (and vice versa). This all-or-nothing approach makes it hard to update parts of the graph, so the save options are quite limited.

The omero-iviewer has it’s own custom iviewer/persist_rois endpoint for saving ROIs. This is not documented as a public API (code is at https://github.com/ome/omero-iviewer/blob/a5d93bc7df3bbc9030d896e6ccd533bca327cd58/plugin/omero_iviewer/views.py#L97) , but you might find it useful (would have to check that users have iviewer installed, but most do).

If this is useful let us know. We need to consider moving this code (or similar functionality) to the built-in JSON API to improve testing, documentation, availability etc and any feedback would be handy.

Thanks,
Will.

2 Likes