2017-06-18 4 views
0

私の環境はJava 7、Windows 7 - 64ビットです。だからここに私は javaの続き私の要件と手順です:Javaのバージョン「1.8.0_131」32ビット ジェイコブ:ジェイコブ-1.18-x86.dll & jacob.jarjacob IDispatchのQIオブジェクトでき​​ません

私は次のコード.ITの作品を実行するためにEclipseを使用よく

import com.jacob.com.*; 
import com.jacob.activeX.*; 
public class DispatchTest { 
    public static void main(String[] args) { 
     ActiveXComponent xl = new ActiveXComponent("Execl.Application"); 
     Dispatch xlo = (Dispatch)(xl.getObject()); 
     try { 
      System.out.println("version="+xl.getProperty("Version")); 
      System.out.println("version="+Dispatch.get(xlo, "Version")); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } finally { 
      xl.invoke("Quit", new Variant[] {}); 
     } 
    } 
} 

私は、サードパーティのDLLを使用しようと、私は次のようexecptionを満たし:

import com.jacob.com.*; 
import com.jacob.activeX.*; 
public class DispatchTest { 
    public static void main(String[] args) { 
     ActiveXComponent xl = new ActiveXComponent("ProjectParser.1"); 
     Dispatch xlo = (Dispatch)(xl.getObject()); 
     try { 
      System.out.println("version="+xl.getProperty("Version")); 
      System.out.println("version="+Dispatch.get(xlo, "Version")); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } finally { 
      xl.invoke("Quit", new Variant[] {}); 
     } 
    } 
} 

Exception in thread "main" com.jacob.com.ComFailException: Can't QI object for IDispatch 
    at com.jacob.com.Dispatch.createInstanceNative(Native Method) 
    at com.jacob.com.Dispatch.<init>(Dispatch.java:99) 
    at com.jacob.activeX.ActiveXComponent.<init>(ActiveXComponent.java:58) 
    at DispatchTest.main(DispatchTest.java:5) 

https://github.com/joval/jacob/blob/master/jni/Dispatch.cpp

誰もが解決策に私を導くてくださいすることができますか?

答えて

0

Oleview.exe toolでCOMオブジェクトを確認してください。 私はあなたのオブジェクトがIDispatchインターフェイスを実装していないと仮定します。 まだ使用する必要がある場合は、Com4J libraryを試すことができます。これは、IDispatchインターフェイスなしでCOMオブジェクトを操作できます。

com4Jディストリビューションに付属するtlbimp.jarを使用して、COMオブジェクト用のJavaクラスファイルを作成する必要があります。詳細は、Com4J tutorialsを参照してください。

関連する問題