Nativescript Vue 无法使用自定义 Java 插件

问题描述

我有一个非常基本的 Java 函数,我想通过 NativeScript Vue 应用程序调用它。 .java 文件如下所示:

package com.example.toastermodule;

import android.content.Context;
import android.widget.Toast;

public class Toaster {
    public void show(Context context) {
        CharSequence text ="Hello NativeScript!";
        int duration = Toast.LENGTH_SHORT;

        Toast toast = Toast.makeText(context,text,duration);
        toast.show();

    }
}

这篇文章 (https://nativescript.org/blog/plugins-and-jars/) 是我获取 Java 代码的地方,并指导我将功能导出为 jar,并将其导入 NativeScript。但是,提供的 gradle 代码实际上并没有生成 jar 文件。我在网上找到了对本指南的各种参考,更新了 gradle 说明以说明构建文件存储位置的变化,但我仍然无法生成单个复合 jar 文件

我也曾使用这篇文章 (https://docs.nativescript.org/plugins/plugin-reference) 尝试直接导入 Java 插件。我为 Java 项目创建了一个基本的 package.json 文件,如下所示:

{
  "name": "nativescript-my-plugin","version": "0.0.1","nativescript": {
    "platforms": {
      "ios": "4.0.0","android": "4.1.0"
    }
  }
}

我将此文件放入主项目文件夹(例如“~/AndroidStudioProjects/Toaster/”)。当我在我的 NativeScript 项目中打开一个终端并运行 tns add plugin "~/AndroidStudioProjects/Toaster/" 时,我收到了令人鼓舞的消息:Successfully installed plugin nativescript-my-plugin.

但是,如果我从“nativescript-my-plugin”更改 package.json 文件中的名称,我会收到一条错误消息:Cannot find module 'toaster-plugin/package.json'。我不知道为什么更改名称会给我这个错误消息,因为据我所知,名称是任意的,没有在其他任何地方引用。

此外,当我尝试实际使用插件时(我的 Home.vue 看起来像这样)

<template>
    <Page>
        <ActionBar>
            <Label text="Home"/>
        </ActionBar>

        <GridLayout>
            <Label class="info">
                <FormattedString>
                    <Span class="fas" text.decode="&#xf135; "/>
                    <Span :text="message"/>
                    
                </FormattedString>
            </Label>
            <Button @tap="printJava" text="Print Java"/>
        </GridLayout>
    </Page>
</template>

<script>

var myPlugin = require("nativescript-my-plugin");
  export default {
    computed: {
      message() {
        return "Blank {N}-Vue app";
      }
    },methods: {
    printJava(){
        myPlugin.show();
    }
  }
  }
</script>

<style scoped lang="scss">
    @import '~@nativescript/theme/scss/variables/blue';

    // Custom styles
    .fas {
        @include colorize($color: accent);
    }

    .info {
        font-size: 20;
        horizontal-align: center;
        vertical-align: center;
    }
</style>

我收到此错误消息 Module not found: Error: Can't resolve 'nativescript-my-plugin' in '~\java-test-2\app\components',然后是

Error from chokidar (C:\): Error: EBUSY: resource busy or locked,lstat 'C:\hiberfil.sys'
File change detected. Starting incremental webpack compilation...
File change detected. Starting incremental webpack compilation...

尽管实际上并未对代码进行任何更改。

所以我的问题是,为什么 package.json 中声明的名称只有在 "nativescript-my-plugin" 时才有效?在这个过程中我做错了什么?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...