当前位置: 首页 > 知识库问答 >
问题:

从JAVA访问. tlb

陈兴朝
2023-03-14

目前正在尝试从JAVA访问类型库文件,我尝试了以下操作并出现了相应的错误:

1- Com2Java:每次尝试连接到我的应用程序时,我都会收到此错误:

默认情况下,在客户端版本的Windows上不启用小型转储

2- Com4j:它只产生接口,无法理解如何使用它们(我找不到任何类,只有接口)

3-经过小搜索,发现了Visual J,但无法下载它,因为它被剥夺了。

任何人都可以提供建议吗?

非常感谢。

共有1个答案

易刚捷
2023-03-14

我以前没有使用过Com2Java或Com4j,但很久以前我使用了一个名为JavaCOMBridge的库(https://sourceforge.net/projects/jacob-project/).

我使用的JavaCOMBridge版本无法处理多重继承,我看不出有什么好方法可以做到这一点。

忘掉Visual J吧。这是微软创造的令人憎恶的东西,被起诉为遗忘。

如果你对C和Java都很有经验,并且你需要桥接的API数量并不大,我推荐你直接使用JNI。

编辑这是一个使用Excel的示例:

package test;
import com.jacob.activeX.ActiveXComponent;
import com.jacob.com.Dispatch;
import com.jacob.com.Variant;
public class JaCoBTest {
        public static void main(String[] args) {
                String EXCEL_FILE = "FullPathOfAnExcelFile.xlsx";
                // Using Excel as an example
                ActiveXComponent app = new ActiveXComponent("Excel.Application");
                // Modify a property, to show Excel window
                app.setProperty("Visible", true);
                // Get Excel workbook object
                Dispatch workbook = app.getProperty("Workbooks").toDispatch();
                // Call method, to open an Excel file
                Dispatch.call(workbook, "Open", new Variant(EXCEL_FILE), new Variant("1"));
                // Wait for 5 seconds
                try {
                        Thread.sleep(1000);
                } catch (InterruptedException iex) {
                        iex.printStackTrace();
                }
                // Close Excel without saving
                workbook.call(workbook, "Close");
                // Close is supposed to have three optional parameteters, but the line below is not working
                //workbook.call(workbook, "Close", new Variant(false), Variant.DEFAULT, Variant.DEFAULT);
                // Close Excel
                Dispatch.call(app, "Quit");
        }
}

在上面的代码中有一个问题——我不能让可选参数工作。函数工作簿。Close应该有三个可选参数,但是调用总是失败,因为参数数量无效。

我还找到了当时使用的网页:http://danadler.com/jacob/上面的页面包含一个常见问题的链接,但有点过时。

 类似资料:
  • 问题内容: 我需要一个允许我使用Java在Gmail中进行电子邮件操作(例如,发送/接收邮件)的库。 问题答案: 您是否看到过Java的g4j-GMail API? GMailer Java版API(g4j)是一组API,允许Java程序员与GMail进行通信。借助G4J,程序员可以制作基于GMail大量存储的基于Java的应用程序。

  • 问题内容: 您如何从Java 访问? 最后一行使编译器死于“ scala类型。None不带参数”。 由于“找不到符号构造函数None()”而失败: 由于“找不到符号变量无”而失败: 在2007年,这曾经奏效,但后来Scala改变了。Java编译器提供: 问题答案: 这可能起作用: def apply [A](x:A):Option [A] 一个Option工厂,如果参数不为null,则创建Some

  • 问题内容: 一个星期以来,我一直在尝试从Java访问Visual Fox Pro数据库。我感到很绝望,因为我的项目预算和时间紧迫。(和其他项目一样,哈哈哈) 我有一个,一个和一个文件。我需要能够查找记录,提取数据和更新数据。我没有VFP许可证。 我希望有人能提供一些指导或可行的例子。如果唯一的方法是购买司机,我将根据收到的建议考虑考虑。 这是我尝试过的简短描述。 我发现了这个xBaseJ:可以读写

  • 问题内容: 是否可以从Java代码访问扩展功能? 我在Kotlin文件中定义了扩展功能。 (生成的)java类在哪里。现在,我想用普通的Java代码访问它: 但是,这不起作用。 IDE无法识别该方法,并且编译失败。 起作用的是与kotlin的静态函数一起使用: 通过使用我的IDE似乎已正确配置。 我从kotlin文档中搜索了整个Java互操作文件,并且在谷歌上搜索了很多,但是找不到。 我究竟做错了

  • 问题内容: 我试图将一些Scala代码注入到现有的Java应用程序中。(所以,话说回来,我想要更多的乐趣)。 我在Scala中创建一个单例的东西 现在,在OldJava.java中 我应该填写什么以便Java调用showMyPower方法?我尝试了两者 ,但没有任何效果。 (使用Jad反编译类文件,除了胡说八道之外,什么都没给我显示。) 编辑 我删除了声明,scala产生了预期的静态方法。(呼吁工

  • 我在Kotlin文件中定义了扩展函数。 其中是(生成的)java类。现在,我想用正常的java代码访问它: 然而,那是行不通的。IDE将无法识别方法,编译失败。