Compatible with  IntelliJ IDEA
42 130
IntelliJad integrates the Jad decompiler into IntelliJ.

Download plugin

Recent change notes

  • 1.4.3
    1. Fixed icon selection bug in memory file manager.
  • 1.4.2
    1. NPE when opening Window menu with no project open fixed.
  • 1.4.1
    1. Project cleanup is now triggered from canProjectClose to circumvent a deadlock issue.
  • 1.4.0
    1. Project cleanup is optional, based on a config flag. This is a temporary facility while project-closing deadlock issues are examined.
  • 1.3
    1. Project configuration is only stored when used.
    1. Flush release to synchronize svn repository and released version inconsistencies due to server issues recently.
    2. Fixed a couple of typos in the help.
  • 1.2.2
    1. Added total/selected file size counter to memory VFS manager.
  • 1.2.1
    1. Added attach/detech memory VFS source root controls to memory VFS manager.
  • 1.2.0
    1. Added source to SDK to enable SDK-class attachment.
    2. Decompilation is attemped up to three more times per class if the resulting output is empty.
  • 1.1.0
    1. The memory VFS is now based entirely on the deprecated VFS to sort out issues with library attachment and file creation.
    2. Added CloseAllX-like functionality for decompiled file editors.
    3. Project-level configurations are now stored in the workspace file.
  • 1.0.1
    1. Added quotes to decompiled class paths if a space exists.
    2. Normalised some documentation.
  • 1.0
    1. All help documentation now present and hopefully useful.
  • 0.7.1
    1. Various GUI tweaks.
    2. Added help documentation for the memory VFS manager.
  • 0.7
    1. Added a basic manager for the memory file system.
    2. Added a package browser to the exclusion UI.
  • 0.6.1
    1. Fixed some more GUI behaviour bugs.
    2. All screenshots replaced with up-to-date versions.
    3. More help documentation added.
  • 0.6
    1. Added namespace to decompilation action ID.
    2. Sorted code maturity issues.
    3. Added "clear and close console" control to config editor.
    4. Read-only status set always on memory files, and as per config on local file-system files.
  • 0.5.4
    1. Non-jarred classes are now opened and decompiled correctly.
    2. Project configuration view enables/disables controls on dialog opening.
  • 0.5.3
    1. Config is persisted alphabetically.
    2. Console now appears when there is an issue.
  • 0.5.2
    1. ConfigForm now checks for modified data in unbound items correctly.
  • 0.5.1
    1. Line numbers only present in user-preferred code style if requested.
    2. Line numbers never present in debuggable style - this will be remedied later.
  • 0.5
    1. The fallback decompilation file system is now the memory FS.
    2. If decompilation is attempted with no, or an invalid, Jad path defined the user has the opportunity to cancel the decompilation or open the config.
    3. Reformatting styles are now user-preferred OR debuggable.
    4. Local file system decompilation is now based on the memory decompilation to provide greater control over file content.
  • 0.4 - Moved to IntelliJ 7-only compatibility.
  • 0.3 - Memory decompilation now results in source code that is debuggable.
  • 0.2 - Added more icons to console tree renderer; added more help content.
  • 0.1 - Initial release.

General usage instructions

You must have Jad installed on your machine. Open the IntelliJad config (see paragraph below for a note on this) and specify the path to the executable in the "Jad executable" field. Once this is done, the existing default settings are suitable for immediate transparent decompilation.

In IntelliJ's settings view, there are two IntelliJad icons - one for project settings, and one for IDE settings. By default, the project settings are disabled and therefore fall back to the IDE settings. In this way, you can set up a persistent configuration for IntelliJad but override it when necessary for specific projects.

Help for configuring IntelliJad can be found under Help/IntelliJad/Configuring IntelliJad/IntelliJad options. The help will be developed on an ongoing basis to improve it.
Here you can find version compatible with Idea 10:
I updated to intelliJ 10 and am thinking now I have to downgrade to version 9 until this is fixed. I am losing loads of time to find the source code for compiled classes outside of the IDE.
Very good plugin! Sometimes it's easier to look through the code instead of reading the documentation.

Can anyone make it work for Idea 10 ?
I resolved this problem,in idea9 could choose an other plugin,named intellijad9.
it doesn't work on my computer,with follow infomations´╝Ü
Error while registering component: com.intellij.openapi.components.ComponentConfig@124e231: Key net.stevechaloner.intellijad.IntelliJad duplicated [Plugin: IntelliJad 9]
com.intellij.diagnostic.PluginException: Key net.stevechaloner.intellijad.IntelliJad duplicated [Plugin: IntelliJad 9]

I have installed idea9.0.1 and jad.
any one can help me of this ploblem?
thank you all!
Invaluable plugin. Any plans for Intellijad 10? I've terribly sad that I've lost this plugin with Intellij 10.
I've updated IntelliJad for IntelliJ v9 - details at
Please adapt it to version 9 (I'm using community edition). It fails with the following exception:

com.intellij.openapi.roots.ProjectRootManager.getProjectJdk()Lcom/intellij/openapi/projectRoots/ProjectJdk;: com.intellij.openapi.roots.ProjectRootManager.getProjectJdk()Lcom/intellij/openapi/projectRoots/ProjectJdk;
java.lang.NoSuchMethodError: com.intellij.openapi.roots.ProjectRootManager.getProjectJdk()Lcom/intellij/openapi/projectRoots/ProjectJdk;
at net.stevechaloner.intellijad.IntelliJad$
at com.intellij.openapi.application.impl.ApplicationImpl.runWriteAction(
at net.stevechaloner.intellijad.IntelliJad.checkSDKRoot(
at net.stevechaloner.intellijad.IntelliJad.checkSDKRoot(
at net.stevechaloner.intellijad.IntelliJad.decompile(
at net.stevechaloner.intellijad.actions.NavigationListener$1$1.execute(
at net.stevechaloner.intellijad.actions.NavigationListener.fileOpened(
at sun.reflect.GeneratedMethodAccessor29.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(
at java.lang.reflect.Method.invoke(
at com.intellij.util.messages.impl.MessageBusConnectionImpl.deliverMessage(
at com.intellij.util.messages.impl.MessageBusImpl.doPumpMessages(
at com.intellij.util.messages.impl.MessageBusImpl.doPumpMessages(
at com.intellij.util.messages.impl.MessageBusImpl.pumpMessages(
at com.intellij.util.messages.impl.MessageBusImpl.pumpMessages(
at com.intellij.util.messages.impl.MessageBusImpl.sendMessage(
at com.intellij.util.messages.impl.MessageBusImpl.access$000(
at com.intellij.util.messages.impl.MessageBusImpl$2.invoke(
at $Proxy59.fileOpened(Unknown Source)
at com.intellij.openapi.fileEditor.impl.FileEditorManagerImpl.openFileImpl3(
at com.intellij.openapi.fileEditor.impl.FileEditorManagerImpl$
at com.intellij.openapi.command.impl.CommandProcessorImpl.executeCommand(
at com.intellij.openapi.command.impl.CommandProcessorImpl.executeCommand(
at com.intellij.openapi.command.impl.CommandProcessorImpl.executeCommand(
at com.intellij.openapi.fileEditor.impl.FileEditorManagerImpl.openFileImpl2(
at com.intellij.openapi.fileEditor.impl.FileEditorManagerImpl.openFileWithProviders(
at com.intellij.openapi.fileEditor.ex.FileEditorManagerEx.openFile(
at com.intellij.openapi.fileEditor.impl.FileEditorManagerImpl$
at com.intellij.openapi.command.impl.CommandProcessorImpl.executeCommand(
at com.intellij.openapi.command.impl.CommandProcessorImpl.executeCommand(
at com.intellij.openapi.command.impl.CommandProcessorImpl.executeCommand(
at com.intellij.openapi.fileEditor.impl.FileEditorManagerImpl.openEditor(
at com.intellij.openapi.fileEditor.OpenFileDescriptor.navigateInAnyFileEditor(
at com.intellij.openapi.fileEditor.OpenFileDescriptor.navigateInEditor(
at com.intellij.openapi.fileEditor.OpenFileDescriptor.navigate(
at com.intellij.psi.impl.PsiElementBase.navigate(
at com.intellij.codeInsight.navigation.NavigationUtil.activateFileWithPsiElement(
at com.intellij.ide.projectView.impl.nodes.AbstractPsiBasedNode.navigate(
at com.intellij.util.OpenSourceUtil.navigate(
at com.intellij.util.OpenSourceUtil.openSourcesFrom(
at com.intellij.util.EditSourceOnDoubleClickHandler$TreeMouseListener.processDoubleClick(
at com.intellij.util.EditSourceOnDoubleClickHandler$TreeMouseListener.mouseClicked(
at java.awt.AWTEventMulticaster.mouseClicked(
at java.awt.AWTEventMulticaster.mouseClicked(
at java.awt.AWTEventMulticaster.mouseClicked(
at java.awt.AWTEventMulticaster.mouseClicked(
at java.awt.Component.processMouseEvent(
at javax.swing.JComponent.processMouseEvent(
at com.intellij.ui.treeStructure.Tree.processMouseEvent(
at com.intellij.ide.dnd.aware.DnDAwareTree.processMouseEvent(
at java.awt.Component.processEvent(
at java.awt.Container.processEvent(
at java.awt.Component.dispatchEventImpl(
at java.awt.Container.dispatchEventImpl(
at java.awt.Component.dispatchEvent(
at java.awt.LightweightDispatcher.retargetMouseEvent(
at java.awt.LightweightDispatcher.processMouseEvent(
at java.awt.LightweightDispatcher.dispatchEvent(
at java.awt.Container.dispatchEventImpl(
at java.awt.Window.dispatchEventImpl(
at java.awt.Component.dispatchEvent(
at java.awt.EventQueue.dispatchEvent(
at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(
at com.intellij.ide.IdeEventQueue._dispatchEvent(
at com.intellij.ide.IdeEventQueue.dispatchEvent(
at java.awt.EventDispatchThread.pumpOneEventForFilters(
at java.awt.EventDispatchThread.pumpEventsForFilter(
at java.awt.EventDispatchThread.pumpEventsForHierarchy(
at java.awt.EventDispatchThread.pumpEvents(
at java.awt.EventDispatchThread.pumpEvents(
Seems it does not work with Intellij IDEA9, someone can fix it?
Why are all referenced classes, which are not java./javax. etc. red and cannot be resolved, even if they are in the same library as the decompiled class?
Thanks - that would be very much appreciated ... :-)
I haven't tried it with v8.0 yet - as soon as I have time, I'll check what's broken and sort it out.
... doesn't seem to work under IDEA 8.0 though ... :-(
This Jad plugin works much better than the aging IdeaJad plug. The integration is much better and there's a lot more to tweak. Also it works for modern JVMs too since you can change the jad executable you use. The virtual file system is quite nice too.
works beautifully! I love it!
Please  sign in  to leave a comment.