Com4j 集成在我的 Java 应用程序中运行良好,但在使用 Proguard 混淆(其他选项已关闭)时不行。我可能做错了什么?
程序挂在 C 处OM4J.createInstance(...)
。我之前看到过这段代码停在同一个位置,即当 Com4j 库找不到底层的 com4j.dll 本机文件时。然而,这段代码确实在没有 Proguard 的情况下工作。
package mypackage;
public abstract class ClassFactory {
private ClassFactory() {}
public static MyInterface createMyComObjectInstance() {
return COM4J.createInstance(MyInterface.class, ComObject_idString );
}
}
接口是这样定义的: public interface MyInterface extends Com4jObject {....}
同上 ProGuard 配置文件(尝试了几种变体)。
-libraryjars myPath\com4j.jar
-keep public class mypackage.** {*;}
-keep public interface MyInterface {*;}
-keep public abstract class mypackage.ClassFactory {
public static MyInterface createMyComObjectInstance();
//also tried this
*;
}
另请注意,Proguard 在其余代码上工作得很好,包括一些 JNI/native 模块。