应用程序无法识别非 android jar 中的功能

Posted

技术标签:

【中文标题】应用程序无法识别非 android jar 中的功能【英文标题】:app won't recognize function in non-android jar 【发布时间】:2013-03-12 23:24:51 【问题描述】:

我正在编写一个应用程序来连接到服务器上的数据库(AS400 服务器使用 SQL 与数据库通信)。 IBM 提供了一个 java 工具箱来访问名为 jt400android 的 jar 中的服务器。

我有一个测试功能:

protected void ConnectionTest()

      AS400 system = new AS400("jc400"); 
      try
      
        system.connectService(AS400.RECORDACCESS);
      
      catch(Exception e)
      
        e.printStackTrace();
        System.exit(0);
      

AS400 是 com.ibm.as400.access.* 中 jt400android.jar 中包含的一个函数,它处理套接字协议、连接和到 AS400 机器的身份验证。 (我采用了这种方法,因为 JDBC 显然不是一个好方法)。

代码编译得很好,没有错误或警告,但是当我在我的 AVD 上运行 apk 时,我得到了这个错误

03-12 22:44:30.300: E/dalvikvm(484): Could not find class 'com.ibm.as400.access.AS400', referenced from method jcpaper.android.jc400droid.MainActivity.ConnectionTest

我搜索了论坛并尝试了以下建议:

    将 jar 添加到 Java Build Path > Libraries(这样做是为了使代码编译) 检查了 Java 构建路径上的 jar > 订单和导出 在 [项目文件夹]/libs 中包含 jar 的副本

每次我最终都会遇到同样的找不到类错误。

我在 Windows XP 上运行 Eclipse for mobile (Juno v1),为 Android 2.3.3 构建。

对这里发生的事情有什么建议吗?

【问题讨论】:

将你的外部 jar 文件添加到 android 项目的 /libs 文件夹中并尝试构建... 我确实尝试过,但 Davlik 开始对我大喊大叫,告诉我我失忆了。 它为每个类吐出这个直到它崩溃:Dx 警告:忽略不带有关联 EnclosureMethod 的匿名内部类 (com.ibm.as400.access.xxx) 的 InnerClasses 属性属性。此类可能是由不针对现代 .class 文件格式的编译器生成的。推荐的解决方案是从源代码重新编译类,使用最新的编译器并且不指定任何“-target”类型选项。忽略这个警告的后果是这个类的反射操作会错误地表明它不是一个内部类 【参考方案1】:

JTOpen Lite/JTLite 库可能会提供一种更好的方式连接到您的服务器。这些库是 IBM 的新库,专为 Android 设备上的特定用途而设计。

JTOpen Lite - IBM Developer Works

JTOpen Lite Javadoc

确保将 .jar 添加到构建路径并正确导出库。

您尝试使用的记录级访问方法是将应用程序连接到 DB2 数据库的旧方法,因此您可能很难找到有关它的信息。

【讨论】:

非常感谢。你不知道有一些好的文档是多么的好。我将切换回使用 jdbc。 AS400 类似乎很陈旧,但它是我能找到的唯一体面的文档。它现在正在构建并识别罐子。

以上是关于应用程序无法识别非 android jar 中的功能的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的 Android 应用程序无法识别 drawables 目录的子目录中的 PNG? [复制]

Magnolia CMS 无法识别我的轻型模块 .jar 文件

Android USB 有时无法识别

Maven 不会从谷歌存储库下载 jars

Android将被依赖的库项目打包成aar(非jar)文件

电脑图片转文字无法识别怎么回事