1

我正在尝试使用 Eclipse 将 AutoIt 与 Java 集成。我已经正确配置了项目和 java 构建路径 - 可能;)。问题是,当我尝试运行我收到的项目时,错误如下所示:

线程“主”com.jacob.com.ComFailException 中的异常:无法在 com.jacob.com.Dispatch.createInstanceNative(Native Method) 处共同创建对象 com.jacob.com.Dispatch.(Dispatch.java:99 ) at com.jacob.activeX.ActiveXComponent.(ActiveXComponent.java:58) at autoitx4java.AutoItX.(AutoItX.java:181) at com.mainPackage.windowsGUIHandler.bleble(windowsGUIHandler.java:23) at com.mainPackage.windowsGUIHandler .main(windowsGUIHandler.java:39)

我的代码看起来像这样(很简单,但足以运行和测试 AutoIT 是否有效)

package com.mainPackage;

import java.io.File;
import com.jacob.com.LibraryLoader;
import junit.framework.Assert;
import autoitx4java.AutoItX;

public class windowsGUIHandler {

public static void thisIsTestFunction() {
    File file = new File("lib", "jacob-1.17-M2-x64.dll");
    System.setProperty(LibraryLoader.JACOB_DLL_PATH, file.getAbsolutePath());
    LibraryLoader.loadJacobLibrary();


    AutoItX x = new AutoItX();
    String notepad = "Untitled - Notepad";
    String testString = "this is a test.";
    x.run("notepad.exe");
    x.winActivate(notepad);
    x.winWaitActive(notepad);
    x.send(testString);
    Assert.assertTrue(x.winExists(notepad, testString));
    x.winClose(notepad, testString);
    x.winWaitActive("Notepad");
    x.send("{ALT}n");
    Assert.assertFalse(x.winExists(notepad, testString));

}

public static void main(String[] args) {
    thisIsTestFunction();
}

}

我做了一项研究,发现这篇文章描述了如果 eclipse 返回Can't co-create object但是当我输入 cmd 时该怎么做

regasm /verbose /nologo /codebase C:\jacob-1.17-M2-x64.dll

执行此命令后,出现错误RegAsm : error RA0000 : Failed to load 'C:\jacob-1.17-M2-x64.dll' 因为它不是有效的 .NET 程序集

此外,我在安装了 JRE 和 JDK 6 x64 的 Windows 7 x64 上运行。

4

1 回答 1

0

您是在 32 位处理器机器上使用 Windows 7 32 位还是在 64 位机器上使用 Windows 7 64 位。

我尝试在带有 regsvr32 的 32 位处理器机器中在我的 Windows 7 32 位中注册 jacob-1.17-M2-x86.dll 并且它成功运行

但在我的另一台装有 Windows 7 64 位处理器的机器上,jacob-1.17-M2-x86.dll 或 jacob-1.17-M2-x64.dll 都没有成功注册。

我必须使用 AutoItX3.dll,它是通过最新的 AutoIT 安装下载的。

检查您的配置并尝试正确的文件并查看。

于 2012-08-20T10:18:07.177 回答