Java Phonegap:Object xx没有方法';执行官';在file:///android_asset/www/cordova.js

Java Phonegap:Object xx没有方法';执行官';在file:///android_asset/www/cordova.js,java,javascript,android,cordova,phonegap-plugins,Java,Javascript,Android,Cordova,Phonegap Plugins,我用Android开发了一个小模块。当在Eclipse中使用debug-or-run方法在我的“真实”设备上测试应用程序时,一切工作都完美无缺。 使用Eclipse(开普勒)、PhoneGap3.1和Android API 10 但是,当我签名、导出、安装和运行应用程序时,一旦调用插件,我就会在调试器中看到以下错误: file:///android_asset/www/cordova.js: 第863行:未捕获类型错误: 对象org.apache.cordova。al@41ae5438没有方法“

我用Android开发了一个小模块。当在Eclipse中使用debug-or-run方法在我的“真实”设备上测试应用程序时,一切工作都完美无缺。 使用Eclipse(开普勒)、PhoneGap3.1和Android API 10 但是,当我签名、导出、安装和运行应用程序时,一旦调用插件,我就会在调试器中看到以下错误:

file:///android_asset/www/cordova.js: 第863行:未捕获类型错误: 对象org.apache.cordova。al@41ae5438没有方法“exec”

未捕获类型错误:Object org.apache.cordova。al@41ae2400没有 方法“exec”位于file:///android_asset/www/cordova.js

我正在用一个延迟对象等待DeviceRady:

var def_deviceready = $.Deferred();
document.addEventListener("deviceready", deviceready, false);

function deviceready(){
    def_deviceready.resolve();
}
function dbaccess(query, arg, callback) {
    var dbaccess = cordova.require("cordova/plugin/dbaccess");
    $.when(def_deviceready).done(dbaccess.getData(query, arg, callback));
};
dbaccess.js:

cordova.define("cordova/plugin/dbaccess", function (require, exports, module) {
    var exec = require("cordova/exec");
    module.exports = {
            getData: function (query, arg, callback) {
                exec(callback, function(){ callback('callbackerror')}, "DBAccess", query, arg);
            }
    };
});
DBAccess.java:

public class DBAccess extends CordovaPlugin {

    HashMap<String, SQLiteDatabase> dbmap;

    /**
     * Constructor.
     */
    public DBAccess() {
        dbmap = new HashMap<String, SQLiteDatabase>();
    }
    @Override
    public boolean execute(String action, String arg, CallbackContext callbackContext) throws JSONException {
        Log.v("info", "This is what we got here: action=\'" + action +"\', arg=\'"+ arg +"\'.");
        if (action != null) {
            String Result = getData(action, arg);
            this.echo(Result, callbackContext);
            return true;
        }
        return false;
    }
.....
.....
public类DBAccess扩展了cordova插件{
HashMap-dbmap;
/**
*构造器。
*/
公共数据库访问(){
dbmap=newhashmap();
}
@凌驾
公共布尔执行(字符串操作、字符串参数、CallbackContext CallbackContext)抛出JSONException{
v(“info”,“这是我们在这里得到的:action=\'”+action+“\'”,arg=\'“+arg+“\'”);
如果(操作!=null){
字符串结果=getData(操作,参数);
this.echo(Result,callbackContext);
返回true;
}
返回false;
}
.....
.....
…并且config.xml还包含:

<feature name="DBAccess">
  <param name="android-package" value="com.phonegap.plugin.dbAccess.DBAccess"/>
</feature>


非常感谢您的帮助…

您的脚本无法包含dbaccess.js尝试在head标记中强制添加它。这就是为什么它无法执行该方法的原因。

您的脚本无法包含dbaccess.js尝试在head标记中强制添加它。这就是为什么它无法执行该方法的原因。

我再次检查了整个项目,然后对于Vicky的评论(我已经包含了dbaccess.js…)

我发现出于某种原因,Claud将我的应用程序配置为使用PhoneGap 3.0运行,但它是使用2.9和另一个config.xml导出的-因此根本没有包含我的模块。我无法确定不同版本的/xml文件在何处或如何配置/定位


因此,我创建了一个全新的项目,将相关文件复制到相应的文件夹中,现在我开始运行了!

感谢Vicky的评论,我再次检查了整个项目(包括dbaccess.js…)

我发现出于某种原因,Claud将我的应用程序配置为使用PhoneGap 3.0运行,但它是使用2.9和另一个config.xml导出的-因此根本没有包含我的模块。我无法确定不同版本的/xml文件在何处或如何配置/定位

所以我最终创建了一个全新的项目,将我的相关文件复制到相应的文件夹中,现在我开始运行了