No edit summary |
(Category: Java) |
||
Line 151: | Line 151: | ||
---- |
---- |
||
<!-- parsed by vimtips.py in 0.625483 seconds--> |
<!-- parsed by vimtips.py in 0.625483 seconds--> |
||
+ | [[Category:Java]] |
Revision as of 19:00, 14 August 2007
Tip: #54 - View a Java Class File using a decompiler
Created: March 22, 2001 18:21 Complexity: intermediate Author: bhaskar_v_k--AT--hotmail.com Version: 5.7 Karma: 148/48 Imported from: Tip#54
Hi All,
Wish u could view a Java Class File using Vim,
Well ur query ends here.
First of all u will need a Java Decompiler to decompile
the Class File.
I would suggest the JAD decompiler by Pavel Kouznetsov
http://www.geocities.com/SiliconValley/Bridge/8617/jad.html
Its a command line decompiler and absolutely free.
U can use any command line decompiler of ur choice.
Next create a vimscript file called jad.vim as
######################### FILE START ################
augr class
au!
au bufreadpost,filereadpost *.class %!d:jad.exe -noctor -ff -i -p %
au bufreadpost,filereadpost *.class set readonly
au bufreadpost,filereadpost *.class set ft=java
au bufreadpost,filereadpost *.class normal gg=G
au bufreadpost,filereadpost *.class set nomodified
augr END
######################## FILE END #####################
Note:- Keep the Jad.exe in a directory with out white spaces.
The -p options directs JAD to send the output to standard output
instead of a .jad file. Other options are described on the JAD site.
Next add the following line in the .vimrc file.
so jad.vim
Next time u do vim abc.class. Viola u have the source code
for abc.class.
NOTE:- I have written the script so as to open the class file
read only, So that u dont accidently modify it.
U can also exted this script to unjar a jar file and then view each
file in the JAR file.
thanks
bhaskar
Any suggestions are welcome
Comments
Hi, first I love this script I modified this a little bit to use the improved file runtime organisation of vim60, I don't know if other will like it better but here it is: I added to filetype.vim:
augroup filetypedetect au! BufRead,BufNewFile *.jad setfiletype java au! BufRead,BufNewFile *.class setfiletype class augroup END
and created in ftplugin a class.vim with %!jad.exe -noctor -ff -i -p % set readonly set ft=java normal gg=G set nomodified
b.cerrina--AT--wanadoo.fr , August 21, 2001 13:54
If you don't want to 'hit ENTER' after every decompilation, you can add 'silent' to some of the lines:
au bufreadpost,filereadpost *.class silent %!jad -noctor -ff -i -p %
and maybe even:
au bufreadpost,filereadpost *.class silent normal gg=G
(thanks to myitcv on #vim--AT--EFnet)
roel--AT--SP-AM_almende.com
, February 24, 2004 6:00
Nice script!!
I can now select any class file, right click, and select the "Edit with Vim" option to view the source.
I'm just wondering, how do I change this to if I do the same to a jar file, and it will show me the contents of the jar file, as in a jar -tf, and if I select any of the entries, I can view the source?
I tried opening the jar file using WinZip, and if I view any of the entries in it using vim, I'll get something like this: JavaClassFileReadException: can't open input file on `C:\Documents' JavaClassFileReadException: can't open input file on `and' JavaClassFileReadException: can't open input file on `Settings\gwunwai\Local' JavaClassFileReadException: can't open input file on `Settings\Temp\Version.class'
I think that's because WinZip extracts the zip entries into my temp directory, which contains white spaces.
Is there some way around this?
gwunwai--AT--pacific.net.sg , June 6, 2004 23:06
you can change the command to %!jad.exe -noctor -ff -i -p "%" (enclosed the % with quotes). It worked for me
Anonymous , July 13, 2005 11:18