nbauma109 / jd-gui-duo

A 2-in-1 JAVA decompiler based on JD-CORE v0 and v1 supporting 3rd party decompilers CFR, Procyon, Fernflower, Vineflower & Jadx.
GNU General Public License v3.0
51 stars 9 forks source link

Linux and MacOS support #144

Open directentis1 opened 1 week ago

directentis1 commented 1 week ago

Bonjour, I came across your project when looking for an alternative to jd-gui and I was really impressed by how it supports multiple projects in one, how convenient it will be for Android Disassembling projects.

But currently there are only binaries for Windows. Will there be releases for Linux or MacOS in the near future? 👀

Because it is a Java project, porting to other platforms is not too complicated. If you need any help, let me know.

Update: You just need to create a new launch, eg. jd-gui-duo.sh and all will be okay.

jre/bin/java -ea --add-opens java.base/java.net=ALL-UNNAMED --add-opens java.desktop/javax.swing.plaf.basic=ALL-UNNAMED --add-opens java.desktop/javax.swing.text=ALL-UNNAMED --add-opens java.prefs/java.util.prefs=ALL-UNNAMED --add-opens java.base/java.lang.ref=ALL-UNNAMED -cp "lib/*" org.jd.gui.App

nbauma109 commented 1 week ago

It's not as simple as that. There is an embedded jre which is generated with jlink from a windows distribution of JDK by project jre-builder. I didn't want to invest time in doing this for mac and Linux because I only use windows as desktop environment and would not be able test. PRs are welcome if everything is tested.

directentis1 commented 1 week ago

Ah, I see your jre version is 17.0.3. I've used jre from BellSoft Liberica, it's worked without any issues.

We also could customize your jre-builder to generate reduce jre version for Linux/Mac. But for a general user, which simple want to download and run, embedded jre is not necessary.

You can simply provide the program and instruct users to download the corresponding jre version, in addition to the full version with jre.

image

nbauma109 commented 1 week ago

For full-feature usage, it requires a jre with the compiler module or a jdk. Embedded jre makes it work out of the box, using any other jre requires a tweak such as changing script or copying.

directentis1 commented 1 week ago

For full-feature usage, it requires a jre with the compiler module or a jdk. Embedded jre makes it work out of the box, using any other jre requires a tweak such as changing script or copying.

Hmm, so we can modify jre-builder a bit to release Linux/Mac versions. And similar for jd-gui-duo to get corresponding jre to each platform.