我使用Eclipse制作我的Java项目。 现在我已经制作了一个计算器并将其导出为可运行的jar文件。 这个计算器已由老师检查,它正在运行。 我可以发布完整的代码,但是你看到它是没有意义的。
现在我试图混淆.jar文件。 我已经下载了proguard 5.0 beta 2来执行此操作。 在目录lib中,有一个名为 proguardgui .jar的文件。我使用这个jar文件来处理我的文件。
只要我不使用其中一个选项:优化,缩小或混淆,输出文件就会运行并显示我的计算器。但是只要我想使用其中一个proguard选项(优化,收缩或混淆),输出文件不再运行。
主要方法是在cal.SwingCalculator中,所以我添加了cal.SwingCalculator来保存其他类名和类成员名。但它仍然无法奏效。 (我已经将cal.SwingCalculator添加到屏幕底部进行优化,收缩和混淆)
例如,当我只使用模糊处理时,输出文件仍将更改main方法的名称。我曾使用Java反编译器检查结果。
输出文件怎么可能不起作用?
当我添加需要保留的班级名称时,是否需要检查选项卡访问权限下的所有框,或者是否可以将其设置为不关心?
我做了本视频中提到的所有内容: https://www.youtube.com/watch?v=vTgWPiRUCu4
# package cal;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
class SwingCalculator {
public static void main(String[] args) {
JFrame frame = new Calculator();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
另一类的一部分:
package cal;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
class Calculator extends JFrame {Lots of code}
答案 0 :(得分:1)
由于您的传统Java应用程序具有main方法,因此您需要确保在ProGuard GUI中勾选此复选框:
(标签)收缩> (小组)保持> (复选框)应用程序
它保留所有具有主要方法的类以及主要方法本身。