Menu

#18 javahexeditor.plugin 0.5.2.202104030307 fails to load on every Eclipse version tried since ~2021 — jar contains "Unresolved compilation problems" stub (missing net.sourceforge.javahexeditor imports)

Next Release
open
nobody
None
5
3 days ago
5 days ago
No

Installed the Java Hex Editor plugin (version 0.5.2.202104030307) into Eclipse
via both the Eclipse Marketplace and directly via the update site
(https://javahexeditor.sourceforge.io/update) — same result both ways.

Environment:

  • Eclipse IDE 2026-06 R, Eclipse CDT/C++ package (eclipse-cpp-2026-06-R-linux-gtk-x86_64)
  • Ubuntu 24.04
  • Java: OpenJDK HotSpot 21.0.11 (build v20260515-1531), bundled via JustJ
    full JRE (org.eclipse.justj.openjdk.hotspot.jre.full.linux.x86_64), as
    shipped with the eclipse-cpp-2026-06-R package — not a system-installed Java

Note: this is not new or specific to the environment above — I've hit this
identical failure with this same plugin version (0.5.2.202104030307) across
multiple different Eclipse installations over the past several years, ever
since I first tried the plugin. Given the plugin's git history shows no code
changes since April/May 2021 (matching this release's timestamp), it looks
like this release build has likely been broken since it was first published,
independent of which Eclipse version it's installed into.

Steps to reproduce:

  1. Install Java Hex Editor via Marketplace (or Install New Software from the
    update site above).
  2. Restart Eclipse.
  3. Right-click a binary file (e.g. a .o file) > Open With > Hex Editor
    (or double-click if it's set as the default editor).

Expected: the file opens in the hex editor view.

Actual: the editor fails to open, with the following exception in the Error
Log:

org.eclipse.core.runtime.CoreException: Plug-in net.sourceforge.javahexeditor.plugin
was unable to load class net.sourceforge.javahexeditor.plugin.editors.HexEditor.
...
Caused by: java.lang.ClassNotFoundException: An error occurred while automatically
activating bundle net.sourceforge.javahexeditor.plugin (649).
...
Caused by: org.osgi.framework.BundleException: Error loading bundle activator.
net.sourceforge.javahexeditor.plugin_0.5.2.202104030307 [649]
...
Caused by: java.lang.Error: Unresolved compilation problems:
The import net.sourceforge.javahexeditor.FindReplaceHistory cannot be resolved
The import net.sourceforge.javahexeditor.Manager cannot be resolved
The import net.sourceforge.javahexeditor.common cannot be resolved
Log cannot be resolved to a type
Manager cannot be resolved to a variable
FindReplaceHistory cannot be resolved to a type
The method isTraceActive() of type HexEditorPlugin must override or implement a supertype method
at net.sourceforge.javahexeditor.plugin.HexEditorPlugin.<init>(HexEditorPlugin.java:27)</init>

This looks like the published 0.5.2.202104030307 build of the .plugin bundle
itself contains a baked-in compile failure, rather than something wrong with
the install — the "Unresolved compilation problems" text is what Eclipse's
compiler writes into a class file when the source had unresolved references
at build time. My guess (not confirmed) is the .plugin bundle's release build
didn't have the core "javahexeditor" module (which defines Manager,
FindReplaceHistory, common, Log) on its classpath when it was compiled.

Would appreciate confirmation of whether this is a known issue, and whether
a rebuild against the current core module is planned.

Discussion

  • Peter Dell

    Peter Dell - 4 days ago

    Thanks for the report. I will check.

     

    Last edit: Peter Dell 4 days ago
  • Peter Dell

    Peter Dell - 4 days ago

    Reproducible in Windows version in Win 11 / Eclipse 2026-06

    org.eclipse.core.runtime.CoreException: Plug-in net.sourceforge.javahexeditor.plugin was unable to load class net.sourceforge.javahexeditor.plugin.editors.HexEditor.
    at org.eclipse.core.internal.registry.osgi.RegistryStrategyOSGI.throwException(RegistryStrategyOSGI.java:245)
    at org.eclipse.core.internal.registry.osgi.RegistryStrategyOSGI.createExecutableExtension(RegistryStrategyOSGI.java:228)
    at org.eclipse.core.internal.registry.ExtensionRegistry.createExecutableExtension(ExtensionRegistry.java:1034)
    at org.eclipse.core.internal.registry.ConfigurationElement.createExecutableExtension(ConfigurationElement.java:286)
    at org.eclipse.core.internal.registry.ConfigurationElementHandle.createExecutableExtension(ConfigurationElementHandle.java:65)
    at org.eclipse.ui.internal.WorkbenchPlugin.lambda$0(WorkbenchPlugin.java:285)
    at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:69)
    at org.eclipse.ui.internal.WorkbenchPlugin.createExtension(WorkbenchPlugin.java:283)
    at org.eclipse.ui.internal.registry.EditorDescriptor.createEditor(EditorDescriptor.java:228)
    at org.eclipse.ui.internal.EditorReference.createPart(EditorReference.java:322)
    at org.eclipse.ui.internal.e4.compatibility.CompatibilityPart.createPart(CompatibilityPart.java:306)
    at org.eclipse.ui.internal.e4.compatibility.CompatibilityEditor.createPart(CompatibilityEditor.java:61)
    at org.eclipse.ui.internal.e4.compatibility.CompatibilityPart.create(CompatibilityPart.java:344)
    at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
    at java.base/java.lang.reflect.Method.invoke(Method.java:580)
    at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:58)
    at org.eclipse.e4.core.internal.di.InjectorImpl.processAnnotated(InjectorImpl.java:1016)
    at org.eclipse.e4.core.internal.di.InjectorImpl.processAnnotated(InjectorImpl.java:994)
    at org.eclipse.e4.core.internal.di.InjectorImpl.internalInject(InjectorImpl.java:138)
    at org.eclipse.e4.core.internal.di.InjectorImpl.internalMake(InjectorImpl.java:397)
    at org.eclipse.e4.core.internal.di.InjectorImpl.make(InjectorImpl.java:315)
    at org.eclipse.e4.core.contexts.ContextInjectionFactory.make(ContextInjectionFactory.java:203)
    at org.eclipse.e4.ui.internal.workbench.ReflectionContributionFactory.createFromBundle(ReflectionContributionFactory.java:90)
    at org.eclipse.e4.ui.internal.workbench.ReflectionContributionFactory.doCreate(ReflectionContributionFactory.java:59)
    at org.eclipse.e4.ui.internal.workbench.ReflectionContributionFactory.create(ReflectionContributionFactory.java:42)
    at org.eclipse.ui.internal.WorkbenchContributionFactory.create(WorkbenchContributionFactory.java:46)
    at org.eclipse.e4.ui.workbench.renderers.swt.ContributedPartRenderer.createWidget(ContributedPartRenderer.java:133)
    at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createWidget(PartRenderingEngine.java:1000)
    at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:671)
    at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:775)
    at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:739)
    at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47)
    at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:723)
    at org.eclipse.e4.ui.internal.workbench.PartServiceImpl.lambda$0(PartServiceImpl.java:105)
    at org.eclipse.e4.ui.services.internal.events.UIEventHandler.lambda$0(UIEventHandler.java:38)
    at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:182)
    at org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:136)
    at org.eclipse.swt.widgets.Display.syncExec(Display.java:4895)
    at org.eclipse.e4.ui.workbench.swt.DisplayUISynchronize.syncExec(DisplayUISynchronize.java:34)
    at org.eclipse.e4.ui.services.internal.events.UIEventHandler.handleEvent(UIEventHandler.java:38)
    at org.eclipse.equinox.internal.event.EventHandlerWrapper.handleEvent(EventHandlerWrapper.java:206)
    at org.eclipse.equinox.internal.event.EventHandlerTracker.dispatchEvent(EventHandlerTracker.java:201)
    at org.eclipse.equinox.internal.event.EventHandlerTracker.dispatchEvent(EventHandlerTracker.java:1)
    at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)
    at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:151)
    at org.eclipse.equinox.internal.event.EventAdminImpl.dispatchEvent(EventAdminImpl.java:132)
    at org.eclipse.equinox.internal.event.EventAdminImpl.sendEvent(EventAdminImpl.java:73)
    at org.eclipse.equinox.internal.event.EventComponent.sendEvent(EventComponent.java:48)
    at org.eclipse.e4.ui.services.internal.events.EventBroker.send(EventBroker.java:55)
    at org.eclipse.e4.ui.internal.workbench.UIEventPublisher.notifyChanged(UIEventPublisher.java:61)
    at org.eclipse.emf.common.notify.impl.BasicNotifierImpl.eNotify(BasicNotifierImpl.java:424)
    at org.eclipse.e4.ui.model.application.ui.impl.ElementContainerImpl.setSelectedElementGen(ElementContainerImpl.java:168)
    at org.eclipse.e4.ui.model.application.ui.impl.ElementContainerImpl.setSelectedElement(ElementContainerImpl.java:187)
    at org.eclipse.e4.ui.internal.workbench.ModelServiceImpl.showElementInWindow(ModelServiceImpl.java:650)
    at org.eclipse.e4.ui.internal.workbench.ModelServiceImpl.bringToTop(ModelServiceImpl.java:614)
    at org.eclipse.e4.ui.internal.workbench.PartServiceImpl.delegateBringToTop(PartServiceImpl.java:805)
    at org.eclipse.e4.ui.internal.workbench.PartServiceImpl.bringToTop(PartServiceImpl.java:406)
    at org.eclipse.e4.ui.internal.workbench.PartServiceImpl.showPart(PartServiceImpl.java:1278)
    at org.eclipse.ui.internal.WorkbenchPage.busyOpenEditor(WorkbenchPage.java:3221)
    at org.eclipse.ui.internal.WorkbenchPage.lambda$11(WorkbenchPage.java:3111)
    at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:69)
    at org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:3109)
    at org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:3079)
    at org.eclipse.ui.actions.OpenWithMenu.openEditor(OpenWithMenu.java:325)
    at org.eclipse.ui.actions.OpenWithMenu.lambda$1(OpenWithMenu.java:213)
    at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:91)
    at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4363)
    at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1217)
    at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4161)
    at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3749)
    at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1160)
    at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
    at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1051)
    at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:153)
    at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:684)
    at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
    at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:583)
    at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:173)
    at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:193)
    at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:219)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:149)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:115)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:467)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:298)
    at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
    at java.base/java.lang.reflect.Method.invoke(Method.java:580)
    at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:615)
    at org.eclipse.equinox.launcher.Main.basicRun(Main.java:563)
    at org.eclipse.equinox.launcher.Main.run(Main.java:1415)
    Caused by: java.lang.ClassNotFoundException: An error occurred while automatically activating bundle net.sourceforge.javahexeditor.plugin (600).
    at org.eclipse.osgi.internal.hooks.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:133)
    at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.findLocalClass(ClasspathManager.java:620)
    at org.eclipse.osgi.internal.loader.ModuleClassLoader.findLocalClass(ModuleClassLoader.java:353)
    at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:418)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass0(BundleLoader.java:527)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:439)
    at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:195)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526)
    at org.eclipse.osgi.internal.framework.EquinoxBundle.loadClass(EquinoxBundle.java:663)
    at org.eclipse.core.internal.registry.osgi.RegistryStrategyOSGI.createExecutableExtension(RegistryStrategyOSGI.java:226)
    ... 87 more
    Caused by: org.osgi.framework.BundleException: Error loading bundle activator. net.sourceforge.javahexeditor.plugin_0.5.2.202104030307 [600]
    at org.eclipse.osgi.internal.framework.BundleContextImpl.start(BundleContextImpl.java:774)
    at org.eclipse.osgi.internal.framework.EquinoxBundle.startWorker0(EquinoxBundle.java:1082)
    at org.eclipse.osgi.internal.framework.EquinoxBundle$EquinoxModule.startWorker(EquinoxBundle.java:394)
    at org.eclipse.osgi.container.Module.doStart(Module.java:643)
    at org.eclipse.osgi.container.Module.start(Module.java:500)
    at org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:528)
    at org.eclipse.osgi.internal.hooks.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:122)
    ... 96 more
    Caused by: java.lang.reflect.InvocationTargetException
    at java.base/jdk.internal.reflect.DirectConstructorHandleAccessor.newInstance(DirectConstructorHandleAccessor.java:74)
    at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:502)
    at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:486)
    at org.eclipse.osgi.internal.framework.BundleContextImpl.loadBundleActivator(BundleContextImpl.java:820)
    at org.eclipse.osgi.internal.framework.BundleContextImpl.start(BundleContextImpl.java:765)
    ... 102 more
    Caused by: java.lang.Error: Unresolved compilation problems:
    The import net.sourceforge.javahexeditor.FindReplaceHistory cannot be resolved
    The import net.sourceforge.javahexeditor.Manager cannot be resolved
    The import net.sourceforge.javahexeditor.common cannot be resolved
    Log cannot be resolved to a type
    Manager cannot be resolved to a variable
    FindReplaceHistory cannot be resolved to a type
    FindReplaceHistory cannot be resolved to a type
    FindReplaceHistory cannot be resolved to a type
    Log cannot be resolved
    FindReplaceHistory cannot be resolved to a type
    FindReplaceHistory cannot be resolved to a type
    The method isTraceActive() of type HexEditorPlugin must override or implement a supertype method

    at net.sourceforge.javahexeditor.plugin.HexEditorPlugin.<init>(HexEditorPlugin.java:27)
    at java.base/jdk.internal.reflect.DirectConstructorHandleAccessor.newInstance(DirectConstructorHandleAccessor.java:62)
    ... 106 more
    
     
  • W. Craig Scratchley

    Thanks for reproducing this. I dug into the project's git repo (git.code.sf.net/p/javahexeditor/git) to see if I could spot the mechanism behind the "Unresolved compilation problems" stub, and think I found something worth sharing -- flagging it as a plausible lead, not a confirmed diagnosis.

    The 0.5.2 release was built April 3, 2021 (the version qualifier "202104030307" is literally the Eclipse build timestamp). The commit right before that, from April 2, 2021 ("Refactor build process and change http:// to https://"), restructured how the plugin is built: instead of compiling the core net.sourceforge.javahexeditor classes directly, javahexeditor.plugin now bundles a separately-built lib/net.sourceforge.javahexeditor.jar, wired in via a Bundle-ClassPath entry in MANIFEST.MF and a library classpath entry in .classpath.

    I checked out the jar and .classpath as they stood right at the April 3 release commit, and on the surface they look correctly set up -- the jar contains real, non-stub Manager/FindReplaceHistory/common classes, and the classpath entry referencing it is there. So I can't point to an obviously broken file in the repo itself; whatever went wrong likely happened in the actual release/export step rather than anything visible in source control.

    One thing that stood out: on May 16, 2021 -- about six weeks after this release shipped -- there are two commits ("Add source reference for lib in plugin" and "Update jar in lib.") that touch exactly that same lib jar and its classpath entry again. As far as I can tell no new release was ever published after that. Worth checking whether those May changes were addressing a problem with this same lib-jar packaging that had already turned up by then, since that would narrow down what to look at now.

    Hope this narrows things down even if it's not the full answer.

     

Log in to post a comment.