Java 想法14。反编译我自己的类(从输出目录)

Java 想法14。反编译我自己的类(从输出目录),java,intellij-idea,decompiling,Java,Intellij Idea,Decompiling,我想看看从我自己的源代码生成的代码,但IDEA似乎没有使用IntelliJ API反编译器使用新的fernflower插件反编译它们 至少我有标题评论 // IntelliJ API Decompiler stub source generated from a class file // Implementation of methods is not available 还有这样的方法:public void update(){/*compiled code*/} 同时,在外部库(例如JD

我想看看从我自己的源代码生成的代码,但IDEA似乎没有使用IntelliJ API反编译器使用新的fernflower插件反编译它们

至少我有标题评论

// IntelliJ API Decompiler stub source generated from a class file
// Implementation of methods is not available
还有这样的方法:
public void update(){/*compiled code*/}

同时,在外部库(例如JDK)中,我看到了正常的头和反编译代码

// Source code recreated from a .class file by IntelliJ IDEA
// (powered by Fernflower decompiler)
若我将代码编译到jar并将其添加到某个模块中,我可以使反编译器工作,但它看起来不像一个普通的解决方案

我能让IDEA使用fernflower反编译任何类文件吗

编辑:打开文件时,IDEA日志文件中出现异常。请参阅代码片段


2015-02-13 19:16:29991[119281666]警告-l.compiled.ClassFileDecompiler-反编译器:class org.jetbrains.java.decompiler.IdeaDecompiler
无法反编译com.intellij.psi.compiled.ClassFileDecompilers$Light$CannotDecompileException:org.jetbrains.java.decompiler.IdeaLogger$InternalException:Method(Ljava/util/HashMap;)V。
位于org.jetbrains.java.decompiler.IdeaDecompiler.getText(IdeaDecompiler.java:162)
位于com.intellij.psi.impl.compiled.ClassFileDecompiler.decompile(ClassFileDecompiler.java:57)
位于com.intellij.openapi.fileEditor.impl.LoadTextUtil.loadText(LoadTextUtil.java:364)
在com.intellij.openapi.fileEditor.impl.FileDocumentManagerImpl.getDocument(FileDocumentManagerImpl.java:167)上
位于com.intellij.openapi.fileEditor.impl.text.PsiAwareTextEditorProvider.createEditorAsync(PsiAwareTextEditorProvider.java:58)
在com.intellij.openapi.fileEditor.impl.FileEditorManagerImpl.openFileImpl4(FileEditorManagerImpl.java:778)
在com.intellij.openapi.fileEditor.impl.FileEditorManagerImpl.openFileImpl3(FileEditorManagerImpl.java:736)
在com.intellij.openapi.fileEditor.impl.FileEditorManagerImpl$8.run(FileEditorManagerImpl.java:716)
位于com.intellij.openapi.command.impl.CoreCommandProcessor.executeCommand(CoreCommandProcessor.java:117)
位于com.intellij.openapi.command.impl.CoreCommandProcessor.executeCommand(CoreCommandProcessor.java:99)
位于com.intellij.openapi.command.impl.CoreCommandProcessor.executeCommand(CoreCommandProcessor.java:85)
在com.intellij.openapi.fileEditor.impl.FileEditorManagerImpl.openFileImpl2(FileEditorManagerImpl.java:713)
位于com.intellij.openapi.fileEditor.impl.FileEditorManagerImpl.openFileWithProviders(FileEditorManagerImpl.java:654)
位于com.intellij.openapi.fileEditor.ex.FileEditorManagerEx.openFile(FileEditorManagerEx.java:146)
位于com.intellij.openapi.fileEditor.impl.FileEditorManagerImpl$14.run(FileEditorManagerImpl.java:1071)
位于com.intellij.openapi.command.impl.CoreCommandProcessor.executeCommand(CoreCommandProcessor.java:124)
位于com.intellij.openapi.command.impl.CoreCommandProcessor.executeCommand(CoreCommandProcessor.java:99)
位于com.intellij.openapi.command.impl.CoreCommandProcessor.executeCommand(CoreCommandProcessor.java:85)
位于com.intellij.openapi.fileEditor.impl.FileEditorManagerImpl.openEditor(FileEditorManagerImpl.java:1067)
位于com.intellij.openapi.fileEditor.OpenFileDescriptor.navigateInyFileEditor(OpenFileDescriptor.java:152)
在com.intellij.openapi.fileEditor.OpenFileDescriptor.navigateInEditor(OpenFileDescriptor.java:138)上
位于com.intellij.openapi.fileEditor.OpenFileDescriptor.navigateInEditorOrNativeApp(OpenFileDescriptor.java:134)
在com.intellij.openapi.fileEditor.OpenFileDescriptor.navigate(OpenFileDescriptor.java:121)
在com.intellij.psi.impl.PsiElementBase.navigate(PsiElementBase.java:197)上
在com.intellij.codeInsight.navigation.NavigationUtil.openFileWithPsiElement(NavigationUtil.java:167)上
在com.intellij.ide.projectView.impl.nodes.AbstractPsiBasedNode.navigate(AbstractPsiBasedNode.java:207)上
在com.intellij.ide.projectView.impl.nodes.AbstractPsiBasedNode.navigate上(AbstractPsiBasedNode.java:217)
在com.intellij.ide.projectView.impl.nodes.PsiFileNode.navigate(PsiFileNode.java:132)上
在com.intellij.util.OpenSourceUtil.navigate(OpenSourceUtil.java:53)
位于com.intellij.util.OpenSourceUtil.openSourcesFrom(OpenSourceUtil.java:31)
在com.intellij.util.EditSourceOnDoubleClickHandler$TreeMouseListener.processDoubleClick上(EditSourceOnDoubleClickHandler.java:130)
位于com.intellij.util.EditSourceOnDoubleClickHandler$TreeMouseListener.onDoubleClick(EditSourceOnDoubleClickHandler.java:122)
位于com.intellij.ui.DoubleClickListener.onClick(DoubleClickListener.java:30)
在com.intellij.ui.ClickListener$1.mousererelease(ClickListener.java:73)
在java.awt.AWTEventMulticaster.mouseRelease(AWTEventMulticaster.java:273)
在java.awt.AWTEventMulticaster.mousererelease(AWTEventMulticaster.java:272)
在java.awt.AWTEventMulticaster.mousererelease(AWTEventMulticaster.java:272)
在java.awt.AWTEventMulticaster.mousererelease(AWTEventMulticaster.java:272)
位于java.awt.Component.ProcessMouseeEvent(Component.java:6414)
位于javax.swing.JComponent.ProcessMouseeEvent(JComponent.java:3275)
位于com.intellij.ui.treeststructure.Tree.ProcessMouseeEvent(Tree.java:421)
位于com.intellij.ide.dnd.aware.DnDAwareTree.ProcessMouseeEvent(DnDAwareTree.java:53)
位于java.awt.Component.processEvent(Component.java:6179)
位于java.awt.Container.processEvent(Container.java:2084)
位于java.awt.Component.dispatchEventImpl(Component.java:4776)
位于java.awt.Container.dispatchEventImpl(Container.java:2142)
位于java.awt.Component.dispatchEvent(Component.java:4604)
位于java.awt.LightweightDispatcher.RetargetMouseeEvent(Container.java:4618)
位于java.awt.LightweightDispatcher.ProcessMouseeEvent(Container.java:4279)
位于java.awt.LightweightDispatcher.dispatchEvent(Container.java:4209)
位于java.awt.Container.dispatchEventImpl(Container.java:2128)
位于java.awt.Window.dispatchEventImpl(Window.java:2492)
位于java.awt.Component.dispatchEvent(Component.java:4604)
位于java.awt.EventQueue.dispatchEventImpl(EventQueue.java:717)
在java.awt.EventQueue.access$400(EventQueue.java:82)
在java.awt.EventQueue$2.run(EventQueue.java:676)
在java.awt.Eve