java - com.apple.eawt.Application 混淆后无法正常工作

标签 java windows macos obfuscation

我用 Java 为 Mac OSx 和 Windows 编写了一个应用程序,但我是在 Windows 上开发的。因此,我使用 java.lang.reflect.* 来实现“关于”和“退出”处理程序而不接收异常。

我已将其导出为可执行 Jar,并且在两个操作系统上一切正常。但是,我想混淆应用程序并且我正在使用 ProGaurd 来这样做。我已经指定了它在 Windows 上工作所必需的库(rt.jar、jsse.jar、jce.jar)并且它在 Windows 上仍然可以正常工作,但是 ProGaurd 告诉我有两个未解析的类动态引用或接口(interface),混淆后的应用程序不再在 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 来混淆我的应用程序。在底部的混淆“选项卡”中,我添加了类 ap.xa 并指定它扩展/实现 AboutHandler、QuitHandler。我还添加了类 com.gui.Tabs 但问题仍然存在。

最佳答案

也许你可以试试Apple Java Extensions .

使用 Apple Java Extensions,您可以在 Windows 上进行开发而无需使用 java.lang.reflect.* 类,也许 ProGuard 会更容易。

关于java - com.apple.eawt.Application 混淆后无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10896799/

相关文章:

javascript - 使用 JavaScript.evaluate 检测 WKWebView 中的按钮单击(按类名)

java - 使用 Lambda 和泛型

windows - 在 Win2008 R2 上初始化 NullRender 失败,并出现错误 REGDB_E_CLASSNOTREG

windows - 如何在 Mac 上运行 Jmeter 窗口脚本

windows - 有没有类似/proc for windows的东西

macos - 权限被拒绝@ apply2files -/usr/local/lib/node_modules/expo-cli/node_modules/extglob/lib/.DS_Store?

javascript - Meteor 无法启动——fibers/futures.js 抛出错误 "Error: SQLITE_CORRUPT: database disk image is malformed"

java - 在 Java 中通过 SOCKS 代理进行 SOAP 调用

Java 为抽象类声明类吗?

java - android 切换 View 时出现意外错误