[ANN] IntelliJad 0.4

IntelliJad 0.4 just got released. Note this is an IDEA 7-only plugin. Further updates to the IDEA 6-compatible version will be made within the 0.3.x version stream.

Known issues:
1. reindentation doesn't appear to work correctly on Linux; it's fine on Windows.
2. At least one NPE will be thrown from within IDEA when you decompile a file - this has been reported as a bug.

评论操作 固定链接

I just installed it on 7294, and here is what i get when starting up IDEA

action with the ID "Decompile" was already registered. Action being registered is com.intellij.openapi.actionSystem.ActionStub@1d81af3; Registered action is com.intellij.openapi.actionSystem.ActionStub@803f84 Plugin: IntelliJad
com.intellij.diagnostic.PluginException: action with the ID "Decompile" was already registered. Action being registered is com.intellij.openapi.actionSystem.ActionStub@1d81af3; Registered action is com.intellij.openapi.actionSystem.ActionStub@803f84 Plugin: IntelliJad
at com.intellij.openapi.actionSystem.impl.ActionManagerImpl.a(ActionManagerImpl.java:502)
at com.intellij.openapi.actionSystem.impl.ActionManagerImpl.registerAction(ActionManagerImpl.java:355)
at com.intellij.openapi.actionSystem.impl.ActionManagerImpl.a(ActionManagerImpl.java:312)
at com.intellij.openapi.actionSystem.impl.ActionManagerImpl.c(ActionManagerImpl.java:220)
at com.intellij.openapi.actionSystem.impl.ActionManagerImpl.a(ActionManagerImpl.java:1)
at com.intellij.openapi.actionSystem.impl.ActionManagerImpl.readExternal(ActionManagerImpl.java:399)
at com.intellij.openapi.components.impl.stores.ComponentStoreImpl.a(ComponentStoreImpl.java:146)
at com.intellij.openapi.components.impl.stores.ComponentStoreImpl.initJdomExternalizable(ComponentStoreImpl.java:15)
at com.intellij.openapi.components.impl.stores.ComponentStoreImpl$1.run(ComponentStoreImpl.java:6)
at com.intellij.openapi.application.impl.ApplicationImpl.runReadAction(ApplicationImpl.java:164)
at com.intellij.openapi.components.impl.stores.ComponentStoreImpl.initComponent(ComponentStoreImpl.java:65)
at com.intellij.openapi.components.impl.ComponentManagerImpl.a(ComponentManagerImpl.java:133)
at com.intellij.openapi.components.impl.ComponentManagerImpl.access$1100(ComponentManagerImpl.java:17)
at com.intellij.openapi.components.impl.ComponentManagerImpl$ComponentConfigComponentAdapter$1.getComponentInstance(ComponentManagerImpl.java:14)
at com.intellij.openapi.components.impl.ComponentManagerImpl$ComponentConfigComponentAdapter.getComponentInstance(ComponentManagerImpl.java:27)
at com.intellij.util.pico.DefaultPicoContainer.getLocalInstance(DefaultPicoContainer.java:193)
at com.intellij.util.pico.DefaultPicoContainer.getInstance(DefaultPicoContainer.java:180)
at com.intellij.util.pico.DefaultPicoContainer.getComponentInstance(DefaultPicoContainer.java:162)
at org.picocontainer.alternatives.AbstractDelegatingMutablePicoContainer.getComponentInstance(AbstractDelegatingMutablePicoContainer.java:75)
at com.intellij.openapi.components.impl.ComponentManagerImpl.a(ComponentManagerImpl.java:143)
at com.intellij.openapi.components.impl.ComponentManagerImpl.a(ComponentManagerImpl.java:96)
at com.intellij.openapi.components.impl.ComponentManagerImpl.initComponents(ComponentManagerImpl.java:169)
at com.intellij.openapi.components.impl.stores.ApplicationStoreImpl.load(ApplicationStoreImpl.java:12)
at com.intellij.openapi.application.impl.ApplicationImpl.load(ApplicationImpl.java:71)
at com.intellij.idea.IdeaApplication.run(IdeaApplication.java:2)
at com.intellij.idea.MainImpl$3.run(MainImpl.java:2)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
at com.intellij.ide.IdeEventQueue.c(IdeEventQueue.java:180)
at com.intellij.ide.IdeEventQueue.b(IdeEventQueue.java:167)
at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:155)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)

0
评论操作 固定链接

this was caused by the fact that i still have IdeaJad plugin installed

0
评论操作 固定链接

Any plans to bundle JAD with future versions of the plugin?
IIRC the "old" IdeaJar plugin does that, making setup effortless..

-tt


0
评论操作 固定链接

I've thought about it - it would bulk out the download considerably because you would need the windows version, the mac version and a linux version. But, as you say, it will make setup automatic and usage transparent...which would be a bit nicer than the current situation. What's your preference on this?

I think I'll hold a poll to see where the common opinion lies.

0
评论操作 固定链接

I'll add a note on this to the help section.

Thanks for spotting it!

0
评论操作 固定链接

I really like the fact that its not bundled, since it means that I dont have to beg and nag for a mac version!

One suggestion though is that when its not found (the error dialog that pops up) to have an option to open up the settings panel from that dialog to select it.

0
评论操作 固定链接

Hello Hani,

I really like the fact that its not bundled, since it means that I
dont have to beg and nag for a mac version!

One suggestion though is that when its not found (the error dialog
that pops up) to have an option to open up the settings panel from
that dialog to select it.


The plugin could bundle versions compiled for the three major platforms.
How big is the Jad executable anyway?

-tt


0
评论操作 固定链接

my windows version (1.5.8e) is 435KB

0
评论操作 固定链接

IdeaJad bundles three versions, so the overall size of the download would be ~1500Kb as it stands now

0
评论操作 固定链接

those are indeed bundled with ideajad plugin as of now
555KB Linux
766KB Mac
439KB Windows

0
评论操作 固定链接

I've created a poll on this to get a feel for the general opinion. Even if i end up bundling Jad with the plugin, it will be in an open location on the file system and I think i'll give the option to provide a custom Jad executable (similar to IntelliJ's Ant setup) to give full flexibility on this.

0
评论操作 固定链接

In build #7312 it's possible to edit the decompiled files even though the file icon has a lock in it.


With "original line numbers as comments" enabled, in this decompiled code on line 73 the line number comment also comments out the } at the end of the line:

C:\Program Files\JetBrains\IntelliJ IDEA 7312\lib\j2ee.jar!\javax\activation\ActivationDataFlavor.class

<![CDATA[
    public boolean isMimeTypeEqual(String mimeType) {
        try { MimeType thisType = new MimeType(this.mimeType); // 71
            MimeType thatType = new MimeType(mimeType); // 72
            return thisType.match(thatType); // 73                }
            catch(MimeTypeParseException e) { // 74
            return false; // 75
        }
        }

        protected String normalizeMimeTypeParameter(String parameterName, String parameterValue) {
        return parameterName + "=" + parameterValue; // 80
    }
]]>


Some weird things in which the constructors are decompiled - lines 36-38 are decompiled many times. Could this be because of some method inlining?

C:\Program Files\JetBrains\IntelliJ IDEA 7312\lib\j2ee.jar!\javax\activation\MimeType.class

<![CDATA[
        public MimeType() {
        primaryType = "application"; // 36
        subType = "*"; // 37
        parameterList = new MimeTypeParameterList(); // 38            }            public MimeType(String rawdata)                throws MimeTypeParseException {/*off*/        primaryType = "application"; // 36/*off*/        subType = "*"; // 37        parameterList = new MimeTypeParameterList(); // 38





        parseMimeType(rawdata); // 44            }            public MimeType(String primary, String sub)                throws MimeTypeParseException {/*off*/        primaryType = "application"; // 36/*off*/        subType = "*"; // 37/*off*/        parameterList = new MimeTypeParameterList(); // 38



        setPrimaryType(primary); // 48
        setSubType(sub); // 49
    }
]]>

0
评论操作 固定链接

The source reformatting is just pretty weak at the moment. I think i'll temporarily remove the line numbers again until this is tweaked.

Could you send me the class you decompiled? Seems to be a good one for picking up these issues!

0
评论操作 固定链接

As you can see from the file path "C:\Program Files\JetBrains\IntelliJ IDEA 7312\lib\j2ee.jar!\javax\activation\ActivationDataFlavor.class" it's in the j2ee.jar file that comes with IDEA EAPs. Download a recent Selena EAP[/url] and you'll have it.

0
评论操作 固定链接

Sorry, i just looked at the output long enough to see it was incorrect. On that note, and before further posts that point to me being an idiot, i'm going to bed!

0

请先登录再写评论。