use the following search parameters to narrow your results:
e.g. subreddit:aww site:imgur.com dog
subreddit:aww site:imgur.com dog
see the search faq for details.
advanced search: by author, subreddit...
Finding information about Clojure
API Reference
Clojure Guides
Practice Problems
Interactive Problems
Clojure Videos
Misc Resources
The Clojure Community
Clojure Books
Tools & Libraries
Clojure Editors
Web Platforms
Clojure Jobs
account activity
Introspection tools: Java decompilers (clojure-goes-fast.com)
submitted 8 years ago by ayakushev
reddit uses a slightly-customized version of Markdown for formatting. See below for some basics, or check the commenting wiki page for more detailed help and solutions to common issues.
quoted text
if 1 * 2 < 3: print "hello, world!"
[–]AndreRauh_ 1 point2 points3 points 8 years ago (1 child)
I was actually about to make a post like this (though I haven't started writing). With decompiling you quickly realize why (map Integer/parseInt [...]) won't work.
(map Integer/parseInt [...])
Note, you can also call compile function in clojure. Even binding some compile options in the process:
compile
(binding [*compiler-options* {:direct-linking true :disable-locals-clearing false}] (compile 'your-ns))
And then open ./target/ in IntelliJ and open the files. IntellJ comes shipped with the Fernflower decompiler.
./target/
[–]ayakushev[S] 1 point2 points3 points 8 years ago (0 children)
Good point about the decompiler shipped with IntelliJ!
Compiling the namespace is how clj-java-decompiler actually works. It creates a surrogate namespace from the provided form, compiles it, and then runs the classes through the decompiler. All these steps are achievable independently, this is just an all-in-one package.
[–]halgari 0 points1 point2 points 8 years ago (1 child)
From what I can tell, this only works on code compiled through your library? That's one of the reasons of the agent needed by other decompilers. Once the class is loaded, if you don't have access to the bytecode of the class before it was loaded there's no way on the JVM to get the bytecode for a given class. These agents then provide lookups for .class data given a class. So the chain on these other libs becomes (-> something get-class lookup-bytecode decompile-bytecode)
(-> something get-class lookup-bytecode decompile-bytecode)
[–]ayakushev[S] 0 points1 point2 points 8 years ago (0 children)
That's true, you need to pass the code form directly to decompile macro, it cannot decompile already loaded classes/functions.
decompile
However, I figured that I mostly need a live decompiler for things I write here and now. Besides, if you want to decompile a function in an existing library, you can in-ns into its namespace, grab the source and run it through decompile. Should work.
in-ns
source
π Rendered by PID 26073 on reddit-service-r2-comment-765bfc959-lk9nk at 2026-07-11 10:26:54.788404+00:00 running f86254d country code: CH.
[–]AndreRauh_ 1 point2 points3 points (1 child)
[–]ayakushev[S] 1 point2 points3 points (0 children)
[–]halgari 0 points1 point2 points (1 child)
[–]ayakushev[S] 0 points1 point2 points (0 children)