java反编译;将class变成java;利用idea进行反编译

java反编译

  • 方式
  • 使用经验
  • Idea进行反编译
  • 碰到错误处理方式
  • class version对应的版本

方式

  1. 利用Idea直接查看引入的jar包,或者利用idea反编译插件,将jar包变成java文件
  2. 在线上传jar包进行反编译:http://www.javadecompilers.com/
  3. 自己下载工具进行反编译

使用经验

  • 最好去使用idea反编译插件,将jar包变成java文件;
  • 其他的工具有的太老,结果很差劲,有的字符集不支持需要去调整

Idea进行反编译

从idea的terminal进入需要反编译jar包的位置,执行以下命令

# mac
java -cp "/Applications/IntelliJ IDEA.app/Contents/plugins/java-decompiler/lib/java-decompiler.jar" org.jetbrains.java.decompiler.main.decompiler.ConsoleDecompiler -dgs=true ***.jar "/Users/***"
# windows
java -cp "D:\Program Files\JetBrains\IntelliJ IDEA 2021.3.2\plugins\java-decompiler\lib\java-decompiler.jar" org.jetbrains.java.decompiler.main.decompiler.ConsoleDecompiler -dgs=true ***.jar "D:\Program Files\"
# 参数说明
1.idea自带的反编译插件我位置——"/Applications/IntelliJ IDEA.app/Contents/plugins/java-decompiler/lib/java-decompiler.jar"
2.需要反编译的jar包——***.jar
3.结果输出位置——"/Users/***"

结果输出后还是一个jar文件,直接解压就可以,里面是.java格式的

碰到错误处理方式

  • 我猜测该问题原因是idea自带jvm是11版本的,然后这个包是使用jdk11编译的
  • 运行的时候用的是自己的环境,52就代表了1.8版本,低版本编译在高版本可以兼容运行,但是高版本的编译在低版本就无法运行
  • 所我我又装了一个11版本的jdk问题就解决了
Exception in thread "main" java.lang.UnsupportedClassVersionError: org/jetbrains/java/decompiler/main/decompiler/ConsoleDecompiler has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:757)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:473)
        at java.net.URLClassLoader.access$100(URLClassLoader.java:74)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:369)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:363)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:362)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:419)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:352)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:352)
        at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:601)

class version对应的版本

Java 1.0	45.0
Java 1.1	45.3
Java 1.2	46.0
Java 1.3	47.0
Java 1.4	48.0
Java 5	49.0
Java 6	50.0
Java 7	51.0
Java 8	52.0
Java 9	53.0
Java 10	54.0
Java 11	55.0
Java 12	56.0
Java 13	57.0
Java 14	58.0
Java 15	59.0
Java 16	60.0
Java 17	61.0
Java 18	62.0
Java 19	63.0

你可能感兴趣的:(JAVA,java,反编译,idea)