cnfree / Eclipse-Class-Decompiler

Eclipse Class Decompiler integrates JD, Jad, FernFlower, CFR, Procyon seamlessly with Eclipse and allows Java developers to debug class files without source code directly
http://www.cpupk.com/decompiler
304 stars 91 forks source link

Eclipse Oxygen error: editor could not be initialized #21

Closed rafvancamp closed 7 years ago

rafvancamp commented 7 years ago

Hi, When decompiling a class in eclipse oxygen (4.7.0, build id 20170620-1800), with version 2.9.2 of the decompiler, eclipse shows the error: "editor could not be initialized". Apparently, eclipse can't load the Class Decompiler Viewer. The same error in eclipse Neon.3, but not in Mars.2 This is the stack trace of the error: java.lang.NullPointerException at org.sf.feeling.decompiler.editor.BaseDecompilerSourceMapper.findSource(BaseDecompilerSourceMapper.java:185) at org.sf.feeling.decompiler.editor.DecompilerSourceMapper.findSource(DecompilerSourceMapper.java:74) at org.sf.feeling.decompiler.editor.JavaDecompilerClassFileEditor.doOpenBuffer(JavaDecompilerClassFileEditor.java:131) at org.sf.feeling.decompiler.editor.JavaDecompilerClassFileEditor.doOpenBuffer(JavaDecompilerClassFileEditor.java:104) at org.sf.feeling.decompiler.editor.JavaDecompilerClassFileEditor.doOpenBuffer(JavaDecompilerClassFileEditor.java:96) at org.sf.feeling.decompiler.editor.JavaDecompilerClassFileEditor.doSetInput(JavaDecompilerClassFileEditor.java:463) at org.eclipse.ui.texteditor.AbstractTextEditor$5.run(AbstractTextEditor.java:3154) at org.eclipse.jface.operation.ModalContext.runInCurrentThread(ModalContext.java:437) at org.eclipse.jface.operation.ModalContext.run(ModalContext.java:353) at org.eclipse.ui.internal.WorkbenchWindow$14.run(WorkbenchWindow.java:2180) at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70) at org.eclipse.ui.internal.WorkbenchWindow.run(WorkbenchWindow.java:2176) at org.eclipse.ui.texteditor.AbstractTextEditor.internalInit(AbstractTextEditor.java:3172) at org.eclipse.ui.texteditor.AbstractTextEditor.init(AbstractTextEditor.java:3197) at org.eclipse.ui.internal.EditorReference.initialize(EditorReference.java:362) at org.eclipse.ui.internal.e4.compatibility.CompatibilityPart.create(CompatibilityPart.java:333) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:55) at org.eclipse.e4.core.internal.di.InjectorImpl.processAnnotated(InjectorImpl.java:990) at org.eclipse.e4.core.internal.di.InjectorImpl.processAnnotated(InjectorImpl.java:955) at org.eclipse.e4.core.internal.di.InjectorImpl.inject(InjectorImpl.java:124) at org.eclipse.e4.core.internal.di.InjectorImpl.internalMake(InjectorImpl.java:399) at org.eclipse.e4.core.internal.di.InjectorImpl.make(InjectorImpl.java:318) at org.eclipse.e4.core.contexts.ContextInjectionFactory.make(ContextInjectionFactory.java:162) at org.eclipse.e4.ui.internal.workbench.ReflectionContributionFactory.createFromBundle(ReflectionContributionFactory.java:105) at org.eclipse.e4.ui.internal.workbench.ReflectionContributionFactory.doCreate(ReflectionContributionFactory.java:74) at org.eclipse.e4.ui.internal.workbench.ReflectionContributionFactory.create(ReflectionContributionFactory.java:56) at org.eclipse.e4.ui.workbench.renderers.swt.ContributedPartRenderer.createWidget(ContributedPartRenderer.java:129) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createWidget(PartRenderingEngine.java:997) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:666) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:772) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.access$0(PartRenderingEngine.java:743)

cnfree commented 7 years ago

I can't reproduce this issue.

Please try this offline archive v2.9.3 package. I fixed this NullPointerException bug.

https://github.com/cnfree/Eclipse-Class-Decompiler/releases/tag/v2.9.3

You can download and install it by the archive way.

image

rafvancamp commented 7 years ago

Thanks for the quick reply. I have installed 2.9.3 as you instructed. Now the nullpointerexception is gone, but the classes are not decompiled. Eclipse shows the class file editor with the title Source Not Found and a button to attach the source. Can you help me with this problem? Thanks so far.

screen shot 2017-07-03 at 12 24 59
cnfree commented 7 years ago

Could you provide your eclipse, jdk environment and the classes which you want to decompile?

It looks like the decompiler plugin can't get the available decompiler by the class file.

cnfree commented 7 years ago

I saw your snapshot, thanks.

Could you provide the fully package structure snapshot? That's very important.

And you'd better upload the package psdi.app.asset, thanks.

rafvancamp commented 7 years ago

eclipse=Eclipse Java EE IDE for Web Developers, Version: Oxygen Release (4.7.0), Build id: 20170620-1800 (this is the current Oxygen release for windows 64-bit) jdk=1.7.0_80 for windows 64-bit psdiappasset.zip

cnfree commented 7 years ago

I still can't reproduce your problem, could you provide the fully project reference structure snapshot? I need to create a similar project to test it.

But I found another problem, the fernflower decompiled psdi.app.asset very slowly, but other decompilers didn't have this problem.

image

rafvancamp commented 7 years ago

here's a screenshot of my project setup: screen shot 2017-07-03 at 16 23 28 screen shot 2017-07-03 at 16 29 56

In my project build path, I created variables that reference either external class folders, or external jar files. What I have noticed is that I can successfully decompile classes that are in external jar files, but not the ones that are in external class folders. The package psdi.app.asset is part of the library business objects. This time I tried decompiling with JD-core

rafvancamp commented 7 years ago

These are my decompile settings

screen shot 2017-07-03 at 16 42 46
rafvancamp commented 7 years ago

update: when I match your project setup, with an internal class folder that contains package psdi.app.asset, then it works. So, the problem is only when I want to decompile classes from an external class folder. In version 2.5.0 of the decompiler, in combination with eclipse luna, this used to work.

cnfree commented 7 years ago

OK, thanks for your feedback. I will fix these problems as soon as possible.

cnfree commented 7 years ago

I had committed a new version v2.9.5.

Please uninstall the old version and install the new version by the marketplace client, or download the offline package and install it.

https://github.com/cnfree/Eclipse-Class-Decompiler/releases/tag/v2.9.5

rafvancamp commented 7 years ago

Thank you very much. This update solved the problem!