imagej / imagej-launcher

The ImageJ native launcher
https://imagej.net/learn/launcher
BSD 2-Clause "Simplified" License
21 stars 23 forks source link

JRE not detected on linux64 #69

Closed frauzufall closed 3 years ago

frauzufall commented 3 years ago

The laucher is not able to pick up the JRE shipped with the latest Fiji version, see this issue.

To get the most recent launcher version, we used the trim-the-fat branch (which should probably be finished and merged, as far as I understood?) and deleted this commit, otherwise it would not build. The resulting Imagej-linux64 binary prints this message:

Could not load Java library '/media/data/Programs/Fiji.app/java/linux-amd64/jdk1.8.0_172/jre//lib/server/libjvm.so': /media/data/Programs/Fiji.app/java/linux-amd64/jdk1.8.0_172/jre//lib/server/libjvm.so: cannot open shared object file: No such file or directory
Warning: falling back to System JVM

It tries to use lib/server/libjvm.so instead of lib/amd64/server/libjvm.so which would be the correct path.

I think I was able to track it down to this line where it should pick lib/amd64/server/libjvm.so but used lib/server/libjvm.so instead.

axtimwalde commented 3 years ago

For me, the launcher fails to detect the JRE shipped with Fiji and then fails to use the system JVM correctly. Error:

Could not load Java library '/home/saalfeld/packages/Fiji.app/java/linux-amd64/jdk1.8.0_172/jre//lib/server/libjvm.so': /home/saalfeld/packages/Fiji.app/java/linux-amd64/jdk1.8.0_172/jre//lib/server/libjvm.so: cannot open shared object file: No such file or directory
Warning: falling back to System JVM
[ERROR] Invalid service: net.imagej.legacy.LegacyService
java.lang.NoSuchMethodError: org.scijava.Context.getClassLoader()Ljava/lang/ClassLoader;
    at net.imagej.util.AppUtils.findResources(AppUtils.java:107)
    at net.imagej.lut.DefaultLUTService.findLUTs(DefaultLUTService.java:124)
    at net.imagej.lut.DefaultLUTService$1.get(DefaultLUTService.java:242)
    at org.scijava.object.ObjectIndex.resolvePending(ObjectIndex.java:388)
    at org.scijava.object.ObjectIndex.get(ObjectIndex.java:133)
    at org.scijava.object.ObjectIndex.getAll(ObjectIndex.java:122)
    at org.scijava.module.DefaultModuleService.getModules(DefaultModuleService.java:141)
    at net.imagej.legacy.LegacyService.initialize(LegacyService.java:498)
    at org.scijava.service.ServiceHelper.createServiceRecursively(ServiceHelper.java:354)
    at org.scijava.service.ServiceHelper.createExactService(ServiceHelper.java:270)
    at org.scijava.service.ServiceHelper.loadService(ServiceHelper.java:232)
    at org.scijava.service.ServiceHelper.loadService(ServiceHelper.java:195)
    at org.scijava.service.ServiceHelper.loadServices(ServiceHelper.java:167)
    at org.scijava.Context.<init>(Context.java:281)
    at org.scijava.Context.<init>(Context.java:237)
    at org.scijava.Context.<init>(Context.java:177)
    at org.scijava.Context.<init>(Context.java:163)
    at net.imagej.ImageJ.<init>(ImageJ.java:77)
    at net.imagej.Main.main(Main.java:54)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at net.imagej.launcher.ClassLauncher.launch(ClassLauncher.java:291)
    at net.imagej.launcher.ClassLauncher.run(ClassLauncher.java:198)
    at net.imagej.launcher.ClassLauncher.main(ClassLauncher.java:89)
[ERROR] No match: net.imagej.legacy.LegacyService
[ERROR] null
java.lang.IllegalArgumentException: Required service is missing: net.imagej.legacy.LegacyService
Context: org.scijava.Context@fb713e7
ClassLoader: java.net.URLClassLoader@5e8507f1

-- Services known to context --
org.scijava.event.DefaultEventService [priority = 100000.0]
net.imagej.legacy.display.LegacyImageDisplayService [priority = 100.0]
net.imagej.lut.DefaultLUTService [priority = 100.0]
fiji.plugin.trackmate.TrackMateService [priority = 0.0]
io.scif.DefaultMetadataService [priority = 0.0]
io.scif.codec.DefaultCodecService [priority = 0.0]
io.scif.formats.qt.DefaultQTJavaService [priority = 0.0]
io.scif.formats.tiff.DefaultTiffService [priority = 0.0]
io.scif.gui.DefaultGUIService [priority = 0.0]
io.scif.img.DefaultImgUtilityService [priority = 0.0]
io.scif.img.converters.DefaultPlaneConverterService [priority = 0.0]
io.scif.ome.services.DefaultOMEMetadataService [priority = 0.0]
io.scif.ome.services.DefaultOMEXMLService [priority = 0.0]
io.scif.refs.DefaultRefManagerService [priority = 0.0]
io.scif.services.DefaultDatasetIOService [priority = 0.0]
io.scif.services.DefaultFilePatternService [priority = 0.0]
io.scif.services.DefaultFormatService [priority = 0.0]
io.scif.services.DefaultTranslatorService [priority = 0.0]
io.scif.services.JAIIIOServiceImpl [priority = 0.0]
io.scif.xml.DefaultXMLService [priority = 0.0]
net.imagej.DefaultDatasetService [priority = 0.0]
net.imagej.DefaultImgPlusService [priority = 0.0]
net.imagej.animation.DefaultAnimationService [priority = 0.0]
net.imagej.autoscale.DefaultAutoscaleService [priority = 0.0]
net.imagej.display.DefaultImageDisplayService [priority = 0.0]
net.imagej.display.DefaultOverlayService [priority = 0.0]
net.imagej.display.DefaultWindowService [priority = 0.0]
net.imagej.display.DefaultZoomService [priority = 0.0]
net.imagej.legacy.plugin.MacroExtensionAutoCompletionService [priority = 0.0]
net.imagej.measure.DefaultMeasurementService [priority = 0.0]
net.imagej.measure.DefaultStatisticsService [priority = 0.0]
net.imagej.notebook.DefaultNotebookService [priority = 0.0]
net.imagej.operator.DefaultCalculatorService [priority = 0.0]
net.imagej.ops.DefaultNamespaceService [priority = 0.0]
net.imagej.ops.DefaultOpMatchingService [priority = 0.0]
net.imagej.ops.DefaultOpService [priority = 0.0]
net.imagej.roi.DefaultROIService [priority = 0.0]
net.imagej.sampler.DefaultSamplerService [priority = 0.0]
net.imagej.table.DefaultTableService [priority = 0.0]
net.imagej.threshold.DefaultThresholdService [priority = 0.0]
net.imagej.types.DefaultDataTypeService [priority = 0.0]
net.imagej.ui.DefaultImageJUIService [priority = 0.0]
net.imagej.ui.awt.AWTRenderingService [priority = 0.0]
net.imagej.ui.awt.AWTScreenCaptureService [priority = 0.0]
net.imagej.ui.swing.ops.DefaultOpFinderService [priority = 0.0]
net.imagej.ui.swing.overlay.JHotDrawService [priority = 0.0]
net.imagej.units.DefaultUnitService [priority = 0.0]
net.imagej.updater.DefaultUpdateService [priority = 0.0]
net.imagej.updater.DefaultUploaderService [priority = 0.0]
org.scijava.app.DefaultAppService [priority = 0.0]
org.scijava.app.DefaultStatusService [priority = 0.0]
org.scijava.command.DefaultCommandService [priority = 0.0]
org.scijava.console.DefaultConsoleService [priority = 0.0]
org.scijava.convert.DefaultConvertService [priority = 0.0]
org.scijava.display.DefaultDisplayService [priority = 0.0]
org.scijava.download.DefaultDownloadService [priority = 0.0]
org.scijava.event.DefaultEventHistory [priority = 0.0]
org.scijava.input.DefaultInputService [priority = 0.0]
org.scijava.io.DefaultIOService [priority = 0.0]
org.scijava.io.DefaultRecentFileService [priority = 0.0]
org.scijava.io.handle.DefaultDataHandleService [priority = 0.0]
org.scijava.io.location.DefaultLocationService [priority = 0.0]
org.scijava.io.nio.DefaultNIOService [priority = 0.0]
org.scijava.main.DefaultMainService [priority = 0.0]
org.scijava.menu.DefaultMenuService [priority = 0.0]
org.scijava.module.DefaultModuleService [priority = 0.0]
org.scijava.object.DefaultObjectService [priority = 0.0]
org.scijava.options.DefaultOptionsService [priority = 0.0]
org.scijava.parse.DefaultParseService [priority = 0.0]
org.scijava.platform.DefaultPlatformService [priority = 0.0]
org.scijava.plugin.DefaultPluginService [priority = 0.0]
org.scijava.prefs.DefaultPrefService [priority = 0.0]
org.scijava.run.DefaultRunService [priority = 0.0]
org.scijava.script.DefaultScriptHeaderService [priority = 0.0]
org.scijava.script.DefaultScriptService [priority = 0.0]
org.scijava.script.process.DefaultScriptProcessorService [priority = 0.0]
org.scijava.search.DefaultSearchService [priority = 0.0]
org.scijava.search.javadoc.DefaultJavadocService [priority = 0.0]
org.scijava.startup.DefaultStartupService [priority = 0.0]
org.scijava.table.io.DefaultTableIOService [priority = 0.0]
org.scijava.task.DefaultTaskService [priority = 0.0]
org.scijava.text.DefaultTextService [priority = 0.0]
org.scijava.thread.DefaultThreadService [priority = 0.0]
org.scijava.tool.DefaultToolService [priority = 0.0]
org.scijava.ui.DefaultUIService [priority = 0.0]
org.scijava.ui.dnd.DefaultDragAndDropService [priority = 0.0]
org.scijava.ui.swing.SwingIconService [priority = 0.0]
org.scijava.ui.swing.script.DefaultLanguageSupportService [priority = 0.0]
org.scijava.welcome.DefaultWelcomeService [priority = 0.0]
org.scijava.widget.DefaultWidgetService [priority = 0.0]
sc.fiji.compat.DefaultFijiService [priority = 0.0]
io.scif.services.DefaultInitializeService [priority = -100.0]
net.imagej.display.DummyScreenCaptureService [priority = -100.0]
net.imagej.render.DummyRenderingService [priority = -100.0]
org.scijava.batch.FileBatchService [priority = -100.0]
org.scijava.log.StderrLogService [priority = -100.0]
org.scijava.platform.DefaultAppEventService [priority = -100.0]
org.scijava.cache.DefaultCacheService [priority = -10000.0]

-- Classpath of ClassLoader --
/home/saalfeld/packages/Fiji.app/plugins/

    at org.scijava.Context.inject(Context.java:474)
    at org.scijava.Context.inject(Context.java:386)
    at org.scijava.plugin.DefaultPluginService.createInstance(DefaultPluginService.java:238)
    at org.scijava.ui.DefaultUIService.discoverUIs(DefaultUIService.java:503)
    at org.scijava.ui.DefaultUIService.getDefaultUI(DefaultUIService.java:193)
    at org.scijava.ui.DefaultUIService.showUI(DefaultUIService.java:140)
    at org.scijava.AbstractGateway.launch(AbstractGateway.java:104)
    at net.imagej.Main.main(Main.java:55)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at net.imagej.launcher.ClassLauncher.launch(ClassLauncher.java:291)
    at net.imagej.launcher.ClassLauncher.run(ClassLauncher.java:198)
    at net.imagej.launcher.ClassLauncher.main(ClassLauncher.java:89)
Error while executing the main() method of class 'net.imagej.Main':
java.lang.NullPointerException
    at net.imagej.legacy.ui.LegacyUI.ij1Helper(LegacyUI.java:119)
    at net.imagej.legacy.ui.LegacyUI.show(LegacyUI.java:130)
    at org.scijava.ui.DefaultUIService.showUI(DefaultUIService.java:157)
    at org.scijava.ui.DefaultUIService.showUI(DefaultUIService.java:142)
    at org.scijava.AbstractGateway.launch(AbstractGateway.java:104)
    at net.imagej.Main.main(Main.java:55)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at net.imagej.launcher.ClassLauncher.launch(ClassLauncher.java:291)
    at net.imagej.launcher.ClassLauncher.run(ClassLauncher.java:198)
    at net.imagej.launcher.ClassLauncher.main(ClassLauncher.java:89)
ctrueden commented 3 years ago

See also the associated forum thread. As I replied there: this looks like the fallback to system Java is working. Something is wrong with the runtime classpath(?) or plugin discovery(?), though. Very weird...

hinerm commented 3 years ago

Closed in https://github.com/imagej/imagej-launcher/pull/74