MRXS format not read after building Qupath 0.2.3 with Tensorflow

Dear devs,

I followed https://qupath.readthedocs.io/en/latest/docs/advanced/stardist.html to build Qupath 0.2.3 with Tensorflow. This worked, but in contrast to vanilla Qupath 0.2.3 I can not vizualize MRXS (non-overlapped) high res images. The server type in Qupath-stardist is “Bio-Formats” and in vanilla Qupath “openslide”.
Can I copy something from the vanilla Qupath folder into the Qupath stardist folder to make it work with MRXS files?

Thank you,
Mario

What operating system are you using? Are there any clues in View → Show log?

Most likely there is an issue with reading the OpenSlide native libraries – these must be found in the directory from which QuPath is launched. This should however happen automatically if you have followed the instructions above to generate an executable.

Hi Pete,

I am using Win10.
Vanilla Qupath 0.2.3 is OK.
Stardist Qupath 0.2.3 log shows an error:

ERROR: Could not load OpenSlide native libraries
    at java.base/java.lang.ClassLoader.loadLibrary(Unknown Source)
    at java.base/java.lang.Runtime.loadLibrary0(Unknown Source)
    at java.base/java.lang.System.loadLibrary(Unknown Source)
    at org.openslide.OpenSlideJNI.<clinit>(OpenSlideJNI.java:55)
    at org.openslide.OpenSlide.<clinit>(OpenSlide.java:53)
    at qupath.lib.images.servers.openslide.OpenslideServerBuilder.<clinit>(OpenslideServerBuilder.java:88)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Unknown Source)
    at java.base/java.lang.reflect.Constructor.newInstance(Unknown Source)
    at java.base/java.util.ServiceLoader$ProviderImpl.newInstance(Unknown Source)
    at java.base/java.util.ServiceLoader$ProviderImpl.get(Unknown Source)
    at java.base/java.util.ServiceLoader$3.next(Unknown Source)
    at qupath.lib.images.servers.ImageServerProvider.getInstalledImageServerBuilders(ImageServerProvider.java:104)
    at qupath.lib.gui.QuPathGUI.refreshExtensions(QuPathGUI.java:1601)
    at qupath.lib.gui.QuPathGUI.<init>(QuPathGUI.java:1059)
    at qupath.lib.gui.QuPathApp.start(QuPathApp.java:60)
    at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$9(LauncherImpl.java:846)
    at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$12(PlatformImpl.java:455)
    at com.sun.javafx.application.PlatformImpl.lambda$runLater$10(PlatformImpl.java:428)
    at java.base/java.security.AccessController.doPrivileged(Unknown Source)
    at com.sun.javafx.application.PlatformImpl.lambda$runLater$11(PlatformImpl.java:427)
    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:174)
    at java.base/java.lang.Thread.run(Unknown Source)
INFO: If you want to use OpenSlide, you'll need to get the native libraries (either building from source or with a packager manager)
and add them to your system PATH, including openslide-jni.

Best regards,
Mario

Which file exactly are you using to launch QuPath after the build? Which version of Java are you using?

Do you mean the one you download, or one you build yourself (without adding in the TensorFlow bit)?

I am using QuPath-0.2.3.exe to launch Qupath after the build.

My Java Version is:
openjdk version “15” 2020-09-15
OpenJDK Runtime Environment AdoptOpenJDK (build 15+36)
OpenJDK 64-Bit Server VM AdoptOpenJDK (build 15+36, mixed mode, sharing)

And with Vanilla Qupath I refer to the downloaded one.

Thanks, it looks like jpackage in OpenJDK 15 has quietly introduced a change so that the .exe file is no longer in the same directory. This is what is breaking things for OpenSlide.

It should work if you can build it with OpenJDK 14.

Alternatively, if you can launch QuPath so that all the OpenSlide-related .dll files are in the same folder as the .exe that might also work.

I’ve added an issue on GitHub, since this will have to be fixed before the next QuPath release: https://github.com/qupath/qupath/issues/615

3 Likes

Thank you Pete!
Copying all .dll files from QuPath-0.2.3\app into the root folder were the .exe files are located restores the MRXS functionality. The log doesn’t show the aforementioned error anymore.

Best regards,
Mario

2 Likes