我已经用 Java 为 Mac OSx 和 Windows 编写了一个应用程序,但我是在 Windows 上开发的。因此,我使用java.lang.reflect.*
为了实现“关于”和“退出”处理程序而不接收异常。
我已将其导出为可执行 Jar,并且在两个操作系统上一切正常。但是,我想混淆应用程序,我正在使用 ProGaurd 来做到这一点。我已经指定了它在 Windows 上工作所需的库(rt.jar、jsse.jar、jce.jar),它在 Windows 上仍然可以正常工作,但是 ProGaurd 告诉我有两个未解析的对类的动态引用或接口,并且混淆的应用程序不再在 Mac 上正常工作(关于和退出处理程序不起作用)。
我在某处读到这ui.jar
是必需的,所以我从我的 Mac 上复制了它并在 ProGaurd 中指定了它,但这似乎并没有解决问题!任何解决方案都表示赞赏......
提前致谢
更新
我现在使用 AppleJavaExtensions 来实现使用com.apple.eawt.Application
而不是反射的处理程序。但是,我仍然遇到完全相同的问题!这是我目前正在使用的代码:
package ap;
import com.apple.eawt.AboutHandler;
import com.apple.eawt.AppEvent;
import com.apple.eawt.AppEvent.QuitEvent;
import com.apple.eawt.Application;
import com.apple.eawt.QuitHandler;
import com.apple.eawt.QuitResponse;
import com.gui.Tabs;
public class xa implements AboutHandler, QuitHandler {
// Constructor to register/install the necessary handler's
public xa(){
Application.getApplication().setAboutHandler(this);
Application.getApplication().setQuitHandler(this);
}
// Implemented method to catch the About menu item
@Override
public void handleAbout(AppEvent.AboutEvent e) {
Tabs.switchAbout();
}
// Implemented method to catch the Quit menu item
@Override
public void handleQuitRequestWith(QuitEvent arg0, QuitResponse arg1) {
Tabs.quit();
}
}
而且我正在使用 ProGuard GUI 来混淆我的应用程序。在底部的 Obsfucation 'tab' 中,我添加了 classap.xa
并指定它 extends/implements AboutHandler, QuitHandler
。我还添加了类com.gui.Tabs
,但问题仍然存在。