【问题标题】:MobileFirst 7.1 - Issue with JSONStore Hybrid App when deployed on AndroidMobileFirst 7.1 - 在 Android 上部署 JSONStore 混合应用程序时出现问题
【发布时间】:2016-04-13 13:49:28
【问题描述】:

我正在尝试将 JSONStore 用于其中一项要求。

由于它是混合应用程序,我通过以下方式对其进行了配置 程序

使用应用程序描述符编辑器打开文件 application-descriptor.xml 单击设计选项卡。在概览下, 展开应用程序 [您的应用程序的名称]。单击可选 特征。单击添加。选择 JSONStore。单击确定。在项目中 资源管理器视图,右键单击标题为您的文件夹 应用名称。单击运行方式。在 MobileFirst Development 上单击运行 服务器。

这是我用来在 JSONStore 中创建文档的示例代码。我按照documentation 中给出的说明进行操作。

WL.Logger.debug ("Successfully connected to MobileFirst Server.");

    var collectionName = 'SomeFlag';

    if(WL.JSONStore.get(collectionName) == null && WL.JSONStore.get(collectionName) == undefined){      
        // Object that defines all the collections.
        var collections = {

          // Object that defines the 'people' collection.
                userAgreement : {

            // Object that defines the Search Fields for the 'people' collection.
            searchFields : {someFlag: 'boolean'}
          }
        };

        // Optional options object.
        var options = {
          localKeyGen : false
        };

        WL.JSONStore.init(collections, options)

        .then(function () {
          var data = [{someFlag: false}];

          // Optional options for add.
          var addOptions = {

            // Mark data as dirty (true = yes, false = no), default true.
            markDirty: true
          };

          // Get an accessor to the people collection and add data.
          return WL.JSONStore.get(collectionName).add(data, addOptions);
        })

        .then(function (numberOfDocumentsAdded) {
            WL.Logger.debug ("Number Of Documents Added " +numberOfDocumentsAdded);
            alert ("Number Of Documents Added " +numberOfDocumentsAdded);
          // Add was successful.
        })

        .fail(function (errorObject) {
           // Handle failure for any of the previous JSONStore operations (init, add).
            WL.Logger.debug ("JSONStore Failed to add any document errorObject " +errorObject);
        });
    }

在 Android 中运行时,JSONStore 创建失败。

java.lang.NoClassDefFoundError: Failed resolution of: Lcom/worklight/jsonstore/util/JSONStoreUtil;
    01-08 13:34:03.962 12289-12425/com.DCSSMobileApp W/System.err:     at com.worklight.androidgap.jsonstore.dispatchers.BaseActionDispatcher.<init>(BaseActionDispatcher.java:44)
    01-08 13:34:03.962 12289-12425/com.DCSSMobileApp W/System.err:     at com.worklight.androidgap.jsonstore.dispatchers.BaseDatabaseActionDispatcher.<init>(BaseDatabaseActionDispatcher.java:29)
    01-08 13:34:03.962 12289-12425/com.DCSSMobileApp W/System.err:     at com.worklight.androidgap.jsonstore.dispatchers.AllDirtyActionDispatcher.<init>(AllDirtyActionDispatcher.java:36)
    01-08 13:34:03.962 12289-12425/com.DCSSMobileApp W/System.err:     at com.worklight.androidgap.plugin.StoragePlugin.initialize(StoragePlugin.java:59)
    01-08 13:34:03.962 12289-12425/com.DCSSMobileApp W/System.err:     at org.apache.cordova.CordovaPlugin.privateInitialize(CordovaPlugin.java:50)
    01-08 13:34:03.962 12289-12425/com.DCSSMobileApp W/System.err:     at org.apache.cordova.PluginManager.getPlugin(PluginManager.java:195)
    01-08 13:34:03.962 12289-12425/com.DCSSMobileApp W/System.err:     at org.apache.cordova.PluginManager.exec(PluginManager.java:141)
    01-08 13:34:03.962 12289-12425/com.DCSSMobileApp W/System.err:     at org.apache.cordova.CordovaBridge.jsExec(CordovaBridge.java:61)
    01-08 13:34:03.962 12289-12425/com.DCSSMobileApp W/System.err:     at org.apache.cordova.ExposedJsApi.exec(ExposedJsApi.java:40)
    01-08 13:34:03.962 12289-12425/com.DCSSMobileApp W/System.err:     at org.chromium.base.SystemMessageHandler.nativeDoRunLoopOnce(Native Method)
    01-08 13:34:03.962 12289-12425/com.DCSSMobileApp W/System.err:     at org.chromium.base.SystemMessageHandler.handleMessage(SystemMessageHandler.java:37)
    01-08 13:34:03.962 12289-12425/com.DCSSMobileApp W/System.err:     at android.os.Handler.dispatchMessage(Handler.java:102)
    01-08 13:34:03.962 12289-12425/com.DCSSMobileApp W/System.err:     at android.os.Looper.loop(Looper.java:135)
    01-08 13:34:03.962 12289-12425/com.DCSSMobileApp W/System.err:     at android.os.HandlerThread.run(HandlerThread.java:61)
    01-08 13:34:03.962 12289-12425/com.DCSSMobileApp W/System.err: Caused by: java.lang.ClassNotFoundException: Didn't find class "com.worklight.jsonstore.util.JSONStoreUtil" on path: DexPathList[[zip file "/data/app/com.DCSSMobileApp-2/base.apk"],nativeLibraryDirectories=[/data/app/com.DCSSMobileApp-2/lib/arm, /vendor/lib, /system/lib]]
    01-08 13:34:03.964 12289-12425/com.DCSSMobileApp W/System.err:     at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
    01-08 13:34:03.964 12289-12425/com.DCSSMobileApp W/System.err:     at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
    01-08 13:34:03.964 12289-12425/com.DCSSMobileApp W/System.err:     at java.lang.ClassLoader.loadClass(ClassLoader.java:469)
    01-08 13:34:03.964 12289-12425/com.DCSSMobileApp W/System.err:  ... 14 more
    01-08 13:34:03.964 12289-12425/com.DCSSMobileApp W/System.err:  Suppressed: java.lang.ClassNotFoundException: com.worklight.jsonstore.util.JSONStoreUtil
    01-08 13:34:03.965 12289-12425/com.DCSSMobileApp W/System.err:     at java.lang.Class.classForName(Native Method)
    01-08 13:34:03.965 12289-12425/com.DCSSMobileApp W/System.err:     at java.lang.BootClassLoader.findClass(ClassLoader.java:781)
    01-08 13:34:03.965 12289-12425/com.DCSSMobileApp W/System.err:     at java.lang.BootClassLoader.loadClass(ClassLoader.java:841)
    01-08 13:34:03.965 12289-12425/com.DCSSMobileApp W/System.err:     at java.lang.ClassLoader.loadClass(ClassLoader.java:504)
    01-08 13:34:03.965 12289-12425/com.DCSSMobileApp W/System.err:      ... 15 more
    01-08 13:34:03.965 12289-12425/com.DCSSMobileApp W/System.err:  Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack available

【问题讨论】:

  • 您使用的 MobileFirst Studio 的内部版本号是多少?查看 Eclipse > 帮助 > 关于 > mobilefirst
  • 移动优先插件工作室 7.1.0.00-20151227-1725

标签: ibm-mobilefirst jsonstore


【解决方案1】:

终于搞定了。我发现 jsonstore.jar 未包含在我的 Android 项目库中,这导致了此错误。

【讨论】:

    【解决方案2】:

    我正在使用与 cmets 中提到的相同的构建,并且能够成功运行 JSONStore 而不会遇到此错误。

    1. 创建新的 Hybrid 应用并添加 Android 环境
    2. 添加了 JSONStore 可选功能
    3. 在common/js/main.js中添加如下代码>wlCommonInit()

      function wlCommonInit(){
          var collectionName = 'people';
      
          // Object that defines all the collections.
          var collections = {
              // Object that defines the 'people' collection.
              people : {
                  // Object that defines the Search Fields for the 'people' collection.
                 searchFields : {name: 'string', age: 'integer'}
              }
          };
      
          // Optional options object.
          var options = {
              // Optional username, default 'jsonstore'.
              username : 'carlos',
      
              // Optional password, default no password.
              password : '123',
      
              // Optional local key generation flag, default false.
              localKeyGen : false
          };
      
          WL.JSONStore.init(collections, options)
      
          .then(function () {
              alert ("success");
          });
      }
      

    我在 Android 模拟器中启动了应用程序并显示了警报。

    【讨论】:

    • 我仍然遇到同样的错误。我也在不同的环境中尝试过,在干净构建 Android 环境后也尝试过,仍然看到同样的问题。
    • java.lang.NoClassDefFoundError: 解析失败:Lcom/worklight/jsonstore/util/JSONStoreUtil;
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-30
    • 2011-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-19
    相关资源
    最近更新 更多