java - 如何在cordova插件中拥有多个java文件

标签 java android cordova

我的plugin.xml 文件如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<plugin id="pl.jcubic.leash.service" version="1.0.0"
        xmlns="http://apache.org/cordova/ns/plugins/1.0">
  <name>Exec</name>
  <description>Apache Cordova Leash shell service plugin</description>
  <license>Apache 2.0</license>
  <keywords>cordova,exec,runtime,process,shell,command</keywords>
  <js-module name="service" src="www/service.js">
    <clobbers target="service"/>
  </js-module>
  <platform name="android">
    <config-file parent="/*" target="res/xml/config.xml">
      <feature name="Service">
        <param name="android-package" value="pl.jcubic.leash.Service" />
        <param name="onload" value="true" />
      </feature>
    </config-file>
    <source-file src="src/pl/jcubic/leash/Service.java"
                 target-dir="src/pl/jcubic/leash/Service" />
  </platform>
</plugin>

我的插件位于 Service.java 文件中,但现在我想创建父类(super class)并在其中放置一些逻辑,以便我的 Service.java 文件如下所示:

package pl.jcubic.leash;

public class Service extends ReflectService {

    public void initialize(CordovaInterface cordova, CordovaWebView webView) {
        super.initialize(cordova, webView);
        // your init code here
    }

    public String echo(String input) {
        if (input.equals("ping")) {
            return "pong";
        } else {
            return null;
        }
    }

}

和 ReflectService.java 看起来像这样:

package pl.jcubic.leash;

public class ReflectService extends CordovaPlugin {
    @Override
    public void initialize(CordovaInterface cordova, CordovaWebView webView) {
        super.initialize(cordova, webView);
    }
   ...
}

但是当我添加插件并运行 cordova run android 时,我收到此错误:

/home/kuba/projects/jcubic/leash/leash/platforms/android/src/pl/jcubic/leash/Service/Service.java:22: error: cannot find symbol                                                      
public class Service extends ReflectService {
                             ^
  symbol: class ReflectService
/home/kuba/projects/jcubic/leash/leash/platforms/android/src/pl/jcubic/leash/Service/Service.java:25: error: cannot find symbol                                                      
        super.initialize(cordova, webView);
        ^
  symbol:   variable super
  location: class Service
2 errors

如何从 android/cordova 插件中的同一包导入类?当我安装插件时,ReflectService.java 文件就在那里。我需要在 xml 文件中放入多个源文件吗?我怎样才能做到这一点?

最佳答案

我需要做的就是将另一个源文件放入 xml 文件中:

<source-file src="src/pl/jcubic/leash/Service.java"
             target-dir="src/pl/jcubic/leash/Service" />
<source-file src="src/pl/jcubic/leash/ReflectService.java"
             target-dir="src/pl/jcubic/leash/Service" />

关于java - 如何在cordova插件中拥有多个java文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44734577/

相关文章:

java - SQLite更新查询Android

java - 我的 Treeset 仅添加 1 个类对象

Java JTextPane + JScrollPane : de/activate automatic scrolling

Android Studio Gradle 指定特定于 Flavor 的输出目录

java - 使用 SQLite 进行简单的数学计算 - Android

java - GLSL 着色器无法在 Android 上编译

java - Android Fragment 可以覆盖 PhoneGap Activity 吗?

for循环中的javascript闭包不起作用

java - 如何使用 JavaMail API 将恢复邮件从我们的域地址 (mine@xxtech.com) 发送到任何用户电子邮件

javascript - 带有颜色转换 jquery 的进度条?