如何从.class重新创建java类?

时间:2017-06-06 13:09:08

标签: java maven

我有一些包含很多 .class java类的包,我能以某种方式重新创建吗?还是maven?

或者我可以做些什么才能使用这个.classes但不要使用的主要课程。因为.class扩展而看到它?

我尝试将.class扩展名更改为.java,但编码错误...重命名为.java后无法读取..

或者可能是依赖它?或者什么是最好的解决方案?

我有这个主要的:

public class Main {
    public static void main(String[] args) {
        Snake snake = new Snake();
        snake.addAI(new MintaAi(), Color.red.darker());
        snake.addAI(new MintaAi(), Color.blue.darker());
        snake.start();
    }
}

我必须运行它,但我需要的是.class扩展名。

2 个答案:

答案 0 :(得分:3)

假设您正在讨论一些以.class文件形式出现的第三方输入; 查看 Java源代码的一种简单方法是将这些类文件放入JAR文件中;并将该JAR文件添加到IntelliJ中的项目设置中。当您知道在该库中出现的类上按“F3”时,IntelliJ将反编译该类文件内容并将其显示给您。

或者,您可以查看为您执行此操作的命令行工具,例如jd-gui。你必须明白,所有这些技术都受到一定程度的限制。例如,当混淆器触摸字节代码时,反编译器可能很难向您显示任何有用的内容。

但真正的答案是:您想退后一步,了解一下您打算使用的概念。像“.java”一样意味着Java源代码;和.class表示“字节码,从Java源代码编译”。

当然:当Snake或MintaAi是所写的课程时;然后应该在某个地方有源代码。

答案 1 :(得分:0)

使用bytecodeview http://bytecodeviewer.com/。它包含几种类型的反编译器。您可以更改反编译器并查看反编译代码质量的预览。如果代码量很小而且没有编译,那么效果很好。

错误的部分是:泛型(类型擦除),非常糟糕的部分是反射(代理调用),真正糟糕的部分是在类文件中使用字节码注入。