Closed rightm closed 7 years ago
i try it on ubuntu will be ok ,but failed on centos .Maybe it is something different .....
I got a similar error with Eclipse instead of IntelliJ:
java.lang.UnsatisfiedLinkError: .../eclipse/configuration/org.eclipse.osgi/bundles/1174/1/.cp/lib/linux/x86/libjd-eclipse.so: .../eclipse/configuration/org.eclipse.osgi/bundles/1174/1/.cp/lib/linux/x86/libjd-eclipse.so: undefined symbol: zlibVersion
The following fixed it for me (I'm using a 32-bit JRE):
LD_PRELOAD=/lib/i386-linux-gnu/libz.so.1.2.8
export LD_PRELOAD
Why does this work?
$ ldd .../eclipse/configuration/org.eclipse.osgi/bundles/1174/1/.cp/lib/linux/x86/libjd-eclipse.so
linux-gate.so.1 => (0xf778d000)
libstdc++.so.6 => /usr/lib/i386-linux-gnu/libstdc++.so.6 (0xf73df000)
libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0xf738a000)
libgcc_s.so.1 => /lib/i386-linux-gnu/libgcc_s.so.1 (0xf736d000)
libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xf71b7000)
/lib/ld-linux.so.2 (0x565d4000)
This shows that the jd shared library is NOT explicitly linked against libz but expected the symbols from libz to be known to dlsym
. There are two ways to achieve that these symbols are present:
The latter is what my workaround does.
The real fix would be to rebuild libjd, passing -lz
on the link command line.
java -jar jd-core-java-1.2.jar /home/tmp/27c26076-48a4-4dee-9617-906f3d358e95/classes.jar /home/tmp/27c26076-48a4-4dee-9617-906f3d358e95/classes Exception in thread "main" java.lang.UnsatisfiedLinkError: /tmp/libjd-intellij4666658878690819195.so: /tmp/libjd-intellij4666658878690819195.so: undefined symbol: zlibVersion at java.lang.ClassLoader$NativeLibrary.load(Native Method) at java.lang.ClassLoader.loadLibrary1(ClassLoader.java:1939) at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1864) at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1825) at java.lang.Runtime.load0(Runtime.java:792) at java.lang.System.load(System.java:1059) at com.jd.util.NativeUtils.loadLibraryFromJar(NativeUtils.java:94) at jd.ide.intellij.JavaDecompiler.(JavaDecompiler.java:9)
at jd.core.Decompiler.(Decompiler.java:18)
at jd.core.Main.main(Main.java:40)