Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ecd doesn't work with Eclipse 2019-09 #69

Open
jochenw opened this issue Nov 20, 2019 · 12 comments
Open

Ecd doesn't work with Eclipse 2019-09 #69

jochenw opened this issue Nov 20, 2019 · 12 comments
Labels
bug requires-investigation The described issue requires further investigation and verification.
Milestone

Comments

@jochenw
Copy link

jochenw commented Nov 20, 2019

There seems to be an incomatibility with versions of Eclipse, which are newer than 4.12 (Last version, I was using ECD successfully.) In Eclipse 4.13 (aka 2019-09) it doesn't.

Steps to reproduce:

  1. Download Eclipse IDE for Java developers (eclipse-java-2019-06-R-win32-x86_64.zip).
  2. Extract the Zip file.
  3. Launch eclipse.exe from the extracted directory.
  4. Using Help/Install New Software... configure https://ecd-plugin.github.io/update as a new update Site. Install the plugins listed below.
  5. In the Java perspective, locate an arbitrary .class file, and do a right mouse clikc on the file. You'll notice, that the option "Open Class With" appears, so the plugin is active. However, the option is greyed out, so the plugin doesn't work.

Enhanced Class Decompiler (Core) 3.1.1.201811062102 org.sf.feeling.decompiler.feature.group ECD project contributors
Enhanced Class Decompiler CFR Extension (Optional) 3.1.1.201811062102 org.sf.feeling.decompiler.cfr.feature.group ECD project contributors
Enhanced Class Decompiler Jad Extension (Optional) 3.1.1.201811062102 org.sf.feeling.decompiler.jad.feature.group ECD project contributors
Enhanced Class Decompiler JD-Core Extension (Optional) 3.1.1.201811062102 org.sf.feeling.decompiler.jd.feature.group ECD project contributors
Enhanced Class Decompiler Procyon Extension (Optional) 3.1.1.201811062102 org.sf.feeling.decompiler.procyon.feature.group ECD project contributors

@RobertZenz
Copy link
Collaborator

Are you seeing something in the Error log/view?

@jochenw
Copy link
Author

jochenw commented Nov 25, 2019

Nothing, that appears to be related.

However, today I installed the plugin into 4.14M3, and it worked out of the box.

@RobertZenz
Copy link
Collaborator

Sounds like a glitch then, but I'm not sure, should be tested at some point (and I'm taking the "some point" quite liberally here because of time constraints).

@RobertZenz RobertZenz added bug requires-investigation The described issue requires further investigation and verification. labels Nov 25, 2019
@RobertZenz RobertZenz added this to the 3.2 milestone Nov 25, 2019
@ethanlim
Copy link

Hey I tried to build the ecd-plugin.jar but the maven screamed a similar error. "org.sf.feeling.decompiler.feature.group"

[ERROR] Cannot resolve project dependencies: [ERROR] Software being installed: com.github.ecd-plugin.update raw:3.1.1.'SNAPSHOT'/format(n[.n=0;[.n=0;[-S]]]):3.1.1-SNAPSHOT [ERROR] Missing requirement: com.github.ecd-plugin.update raw:3.1.1.'SNAPSHOT'/format(n[.n=0;[.n=0;[-S]]]):3.1.1-SNAPSHOT requires 'org.sf.feeling.decompiler.feature.group [3.1.0,3.1.1)' but it could not be found [ERROR]

@RobertZenz
Copy link
Collaborator

@ethanlim That's not similar, that's unrelated. Seems like there is something wrong with the versions on your system...but I'm not in front of a machine with which I could easily test this.

@mindej
Copy link

mindej commented Sep 11, 2020

Does not work with Eclipse 2020-06 as well.

@stephanhaertel
Copy link

I have the same issue running eclipse.buildId=4.17.0.I20200902-1800 on open-jdk_15.
Procyon procyon_3.1.1.201811062102 view will not instantiate. Looks like the Enhanced Class Decompiler package lacks some dependency.
Details:

java.lang.NoClassDefFoundError: sun/misc/URLClassPath
at com.strobel.assembler.metadata.ClasspathTypeLoader.(ClasspathTypeLoader.java:66)
at com.strobel.assembler.metadata.ClasspathTypeLoader.(ClasspathTypeLoader.java:42)
at com.strobel.assembler.InputTypeLoader.(InputTypeLoader.java:45)
at org.sf.feeling.decompiler.procyon.decompiler.ProcyonDecompiler.decompile(ProcyonDecompiler.java:75)
at org.sf.feeling.decompiler.procyon.decompiler.ProcyonDecompiler.decompileFromArchive(ProcyonDecompiler.java:206)
at org.sf.feeling.decompiler.editor.BaseDecompilerSourceMapper.decompile(BaseDecompilerSourceMapper.java:314)
at org.sf.feeling.decompiler.editor.BaseDecompilerSourceMapper.findSource(BaseDecompilerSourceMapper.java:168)
at org.sf.feeling.decompiler.editor.DecompilerSourceMapper.findSource(DecompilerSourceMapper.java:72)
at org.sf.feeling.decompiler.editor.JavaDecompilerClassFileEditor.doOpenBuffer(JavaDecompilerClassFileEditor.java:173)
at org.sf.feeling.decompiler.editor.JavaDecompilerClassFileEditor.doOpenBuffer(JavaDecompilerClassFileEditor.java:148)
at org.sf.feeling.decompiler.editor.JavaDecompilerClassFileEditor.doOpenBuffer(JavaDecompilerClassFileEditor.java:140)
at org.sf.feeling.decompiler.editor.JavaDecompilerClassFileEditor.doSetInput(JavaDecompilerClassFileEditor.java:472)
at org.eclipse.ui.texteditor.AbstractTextEditor.lambda$1(AbstractTextEditor.java:3172)
at org.eclipse.jface.operation.ModalContext.runInCurrentThread(ModalContext.java:436)
at org.eclipse.jface.operation.ModalContext.run(ModalContext.java:352)
at org.eclipse.ui.internal.WorkbenchWindow.lambda$7(WorkbenchWindow.java:2353)
at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:74)
at org.eclipse.ui.internal.WorkbenchWindow.run(WorkbenchWindow.java:2351)
at org.eclipse.ui.texteditor.AbstractTextEditor.internalInit(AbstractTextEditor.java:3189)
at org.eclipse.ui.texteditor.AbstractTextEditor.init(AbstractTextEditor.java:3214)
at org.eclipse.ui.internal.EditorReference.initialize(EditorReference.java:353)
at org.eclipse.ui.internal.e4.compatibility.CompatibilityPart.create(CompatibilityPart.java:340)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:564)
at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:58)
at org.eclipse.e4.core.internal.di.InjectorImpl.processAnnotated(InjectorImpl.java:999)
at org.eclipse.e4.core.internal.di.InjectorImpl.processAnnotated(InjectorImpl.java:964)
at org.eclipse.e4.core.internal.di.InjectorImpl.internalInject(InjectorImpl.java:140)
at org.eclipse.e4.core.internal.di.InjectorImpl.internalMake(InjectorImpl.java:405)
at org.eclipse.e4.core.internal.di.InjectorImpl.make(InjectorImpl.java:332)
at org.eclipse.e4.core.contexts.ContextInjectionFactory.make(ContextInjectionFactory.java:202)
at org.eclipse.e4.ui.internal.workbench.ReflectionContributionFactory.createFromBundle(ReflectionContributionFactory.java:91)
at org.eclipse.e4.ui.internal.workbench.ReflectionContributionFactory.doCreate(ReflectionContributionFactory.java:60)
at org.eclipse.e4.ui.internal.workbench.ReflectionContributionFactory.create(ReflectionContributionFactory.java:42)
at org.eclipse.e4.ui.workbench.renderers.swt.ContributedPartRenderer.createWidget(ContributedPartRenderer.java:132)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createWidget(PartRenderingEngine.java:999)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:659)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:765)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.access$0(PartRenderingEngine.java:736)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:730)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:714)
at org.eclipse.e4.ui.internal.workbench.PartServiceImpl.lambda$0(PartServiceImpl.java:104)
at org.eclipse.e4.ui.services.internal.events.UIEventHandler.lambda$0(UIEventHandler.java:38)
at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:236)
at org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:133)
at org.eclipse.swt.widgets.Display.syncExec(Display.java:4725)
at org.eclipse.e4.ui.internal.workbench.swt.E4Application$1.syncExec(E4Application.java:219)
at org.eclipse.e4.ui.services.internal.events.UIEventHandler.handleEvent(UIEventHandler.java:38)
at org.eclipse.equinox.internal.event.EventHandlerWrapper.handleEvent(EventHandlerWrapper.java:205)
at org.eclipse.equinox.internal.event.EventHandlerTracker.dispatchEvent(EventHandlerTracker.java:203)
at org.eclipse.equinox.internal.event.EventHandlerTracker.dispatchEvent(EventHandlerTracker.java:1)
at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:234)
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:75)
at org.eclipse.equinox.internal.event.EventComponent.sendEvent(EventComponent.java:44)
at org.eclipse.e4.ui.services.internal.events.EventBroker.send(EventBroker.java:55)
at org.eclipse.e4.ui.internal.workbench.UIEventPublisher.notifyChanged(UIEventPublisher.java:63)
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:170)
at org.eclipse.e4.ui.model.application.ui.impl.ElementContainerImpl.setSelectedElement(ElementContainerImpl.java:188)
at org.eclipse.e4.ui.internal.workbench.ModelServiceImpl.showElementInWindow(ModelServiceImpl.java:659)
at org.eclipse.e4.ui.internal.workbench.ModelServiceImpl.bringToTop(ModelServiceImpl.java:623)
at org.eclipse.e4.ui.internal.workbench.PartServiceImpl.delegateBringToTop(PartServiceImpl.java:786)
at org.eclipse.e4.ui.internal.workbench.PartServiceImpl.bringToTop(PartServiceImpl.java:400)
at org.eclipse.e4.ui.internal.workbench.PartServiceImpl.showPart(PartServiceImpl.java:1262)
at org.eclipse.ui.internal.WorkbenchPage.busyOpenEditor(WorkbenchPage.java:3197)
at org.eclipse.ui.internal.WorkbenchPage.lambda$9(WorkbenchPage.java:3102)
at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:74)
at org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:3100)
at org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:3070)
at org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:3061)
at org.eclipse.jdt.internal.ui.javaeditor.EditorUtility.openInEditor(EditorUtility.java:376)
at org.eclipse.jdt.internal.ui.javaeditor.EditorUtility.openInEditor(EditorUtility.java:182)
at org.eclipse.jdt.ui.JavaUI.openInEditor(JavaUI.java:744)
at org.eclipse.jdt.internal.ui.actions.OpenTypeAction.runWithEvent(OpenTypeAction.java:93)
at org.eclipse.jdt.internal.ui.actions.OpenTypeAction.runWithEvent(OpenTypeAction.java:170)
at org.eclipse.ui.internal.handlers.ActionDelegateHandlerProxy.execute(ActionDelegateHandlerProxy.java:281)
at org.eclipse.ui.internal.handlers.E4HandlerProxy.execute(E4HandlerProxy.java:97)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:564)
at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:58)
at org.eclipse.e4.core.internal.di.InjectorImpl.invokeUsingClass(InjectorImpl.java:319)
at org.eclipse.e4.core.internal.di.InjectorImpl.invoke(InjectorImpl.java:253)
at org.eclipse.e4.core.contexts.ContextInjectionFactory.invoke(ContextInjectionFactory.java:173)
at org.eclipse.e4.core.commands.internal.HandlerServiceHandler.execute(HandlerServiceHandler.java:156)
at org.eclipse.core.commands.Command.executeWithChecks(Command.java:488)
at org.eclipse.core.commands.ParameterizedCommand.executeWithChecks(ParameterizedCommand.java:487)
at org.eclipse.e4.core.commands.internal.HandlerServiceImpl.executeHandler(HandlerServiceImpl.java:213)
at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.executeCommand(KeyBindingDispatcher.java:308)
at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.press(KeyBindingDispatcher.java:584)
at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.processKeyEvent(KeyBindingDispatcher.java:653)
at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.filterKeySequenceBindings(KeyBindingDispatcher.java:443)
at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.access$2(KeyBindingDispatcher.java:386)
at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher$KeyDownFilter.handleEvent(KeyBindingDispatcher.java:96)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:89)
at org.eclipse.swt.widgets.Display.filterEvent(Display.java:1254)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1036)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1061)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1046)
at org.eclipse.swt.widgets.Widget.sendKeyEvent(Widget.java:1088)
at org.eclipse.swt.widgets.Widget.sendKeyEvent(Widget.java:1084)
at org.eclipse.swt.widgets.Widget.wmChar(Widget.java:1513)
at org.eclipse.swt.widgets.Control.WM_CHAR(Control.java:4881)
at org.eclipse.swt.widgets.Tree.WM_CHAR(Tree.java:5977)
at org.eclipse.swt.widgets.Control.windowProc(Control.java:4759)
at org.eclipse.swt.widgets.Tree.windowProc(Tree.java:5972)
at org.eclipse.swt.widgets.Display.windowProc(Display.java:4913)
at org.eclipse.swt.internal.win32.OS.DispatchMessage(Native Method)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3610)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1157)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1046)
at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:155)
at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:644)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:551)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:153)
at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:150)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:203)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:134)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:401)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:255)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:564)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:657)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:594)
at org.eclipse.equinox.launcher.Main.run(Main.java:1465)
Caused by: java.lang.ClassNotFoundException: sun.misc.URLClassPath cannot be found by org.sf.feeling.decompiler.procyon_3.1.1.201811062102
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:516)
at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:171)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
... 136 more

@jochenw
Copy link
Author

jochenw commented Oct 1, 2020

This looks to me, like one of the decompiler plugins (Procyon) using a deprecated Java package (sun.misc). Needs to be fixed by the Procyon provider. For now, your options are:

  1. Use another decompiler plugin (CFR, and JD-Core) are working quite well for me.
  2. Use another Java version for running Eclipse. (Just checked: 11, which is the minimum for 2019-06, does still contain at least some sun packages. I am using OpenJDK 11.0.8
  3. Use another Eclipse version, which is able to run on Java 8, and use that. So, basically another flavour of 2., except that Java 8 is more likely to be available anyways.

@koutheir
Copy link

koutheir commented Feb 9, 2021

Does not work with Eclipse 2020-12 (4.18.0).

@astrapotro
Copy link

Not working at all in my installation:

Eclipse IDE for Java Developers (includes Incubating components)
Version: 2021-09 (4.21.0)
Build id: 20210910-1417
OS: Linux, v.5.4.0-90-generic, x86_64 / gtk 3.24.20
Java vendor: Eclipse Adoptium
Java runtime version: 11.0.13+8
Java version: 11.0.13

No luck with CFR , JD-Core and Jad decompilers and no errors appears in eclipse : |
Only working with Procyon and FernFlower decompilers :)

@jpstotz
Copy link
Collaborator

jpstotz commented Nov 19, 2021

@astrapotro That Jad doesn't work is not really a surprise to me. The included binaries are very old (the Linux binary is Jad 1.5.8e released in 2001). Therefore Jad is more or less just a historical snapshot, may be something like a tribute to the origin of Java decompilers?

Unfortunately you forgot to include the version number of the used ECD plugins/features.
If no error is shown in Eclipse UI then may be in the log file .metadata/.log in your Eclipse workspace.

@astrapotro
Copy link

astrapotro commented Nov 22, 2021

Hello @jpstotz :

Enhanced Class Decompiler 
Version: 2.10.0
Build id: 20170815
*** Current Install Configuration:
Id: org.sf.feeling.decompiler.jad, Version: 3.2.2, Location: reference:file:plugins/org.sf.feeling.decompiler.jad_3.2.2.jar

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug requires-investigation The described issue requires further investigation and verification.
Projects
None yet
Development

No branches or pull requests

8 participants