【问题标题】:Missing class error when trying to call Android JAR-based JAVA class from Delphi尝试从 Delphi 调用基于 Android JAR 的 JAVA 类时缺少类错误
【发布时间】:2014-12-01 16:45:25
【问题描述】:

我正在使用 XE7 编写一个 Android 应用程序。我有一个 java 源文件,其中包含一个我希望使用的类。我正在为创建和使用此类的确切方式而苦苦挣扎。我做了以下事情:

  1. 提供的文件(商业 JAVA 库)称为 FT311I2CInterface.java。 (它可以访问FT311 USB device)。该文件中的类名为“FT311I2CInterface”。

  2. 该文件是我能够使用 Eclipse 编译和运行的 Android 演示项目的一部分。此外,我还能够从“FT311I2CInterface.java”生成“FT311I2CInterface.jar”。

  3. 我在我的 Delphi Android 项目的库节点下添加了“FT311I2CInterface.jar”。

  4. 从“FT311I2CInterface.jar”我尝试使用推荐的Java2op.exe tool为这个类提取一个Delphi接口,但没有成功,但使用商业工具Java2Pas我确实获得了一个Delphi接口“JFT311I2CInterfaceClass”和“TJFT311I2C接口”。

  5. 使用此接口,我构建并运行了一个简单的 Android 项目,该项目调用此导入单元,创建此类的实例,以便我调用其方法。

我的创作路线是:

procedure Test;
var
  F311 : JFT311I2CInterface;
begin
  F311 := TJFT311I2CInterface.JavaClass.init( MainActivity );
  // ... 
end;

调用此行时,出现错误:

异常类 EJNI 带有消息“找不到 Java 类 JFT311I2CInterface”。处理 Project1.apk (6287)

我的问题是,我是否必须以某种方式注册或加载此类才能调用它?我看到有很多从 Delphi 调用 Java 类的示例,但是当涉及到使用 Android SDK 中还没有的类时,我感到很困惑。

【问题讨论】:

    标签: java android class delphi


    【解决方案1】:

    查找来自 Brian Long 的视频和网站。他有一个创建 Delphi Android 包装器(用于 Java 类)的示例,该包装器不是由 Embarcadero 提供的。他的例子是调用 Toast。这里有很多陷阱,但是如果您可以按照他如何将 Android Api 文档“翻译”为 Delphi 包装器,那么您最终可以为您自己的 Java 类做同样的事情。 SO上有我自己的1或2个。将 Android 文档与 Delphi 包装器实现进行比较,直到您看到模式出现。

    【讨论】:

      猜你喜欢
      • 2021-02-17
      • 2012-10-19
      • 2014-08-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多