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/ネイティブ モジュールを含む残りのコードでも問題なく動作することにも注意してください。