Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 当构建一个非常简单的PF4J插件时,我的extension.idx文件是空的。为什么?_Java_Pf4j - Fatal编程技术网

Java 当构建一个非常简单的PF4J插件时,我的extension.idx文件是空的。为什么?

Java 当构建一个非常简单的PF4J插件时,我的extension.idx文件是空的。为什么?,java,pf4j,Java,Pf4j,我试图在现有的代码库中使用PF4J。我已经试着把所有必要的东西从演示插件和应用程序转移到我现有的maven项目中。我比较了演示和我的代码,没有发现任何不同之处。然而,当我构建插件的.jar文件时,生成的extensions.idx中有一条注释说它是由PF4J生成的3d,但在其他方面是空的。应该有一个对我的插件的内部类的引用,但是没有。在演示插件中,有 我猜这是我的Maven设置(我的pom文件之一)的一个问题,但是我看了又看,无法解决这个问题。以下是我的插件的Java文件: package co

我试图在现有的代码库中使用PF4J。我已经试着把所有必要的东西从演示插件和应用程序转移到我现有的maven项目中。我比较了演示和我的代码,没有发现任何不同之处。然而,当我构建插件的.jar文件时,生成的extensions.idx中有一条注释说它是由PF4J生成的3d,但在其他方面是空的。应该有一个对我的插件的内部类的引用,但是没有。在演示插件中,有

我猜这是我的Maven设置(我的pom文件之一)的一个问题,但是我看了又看,无法解决这个问题。以下是我的插件的Java文件:

package com.inlet.ifserver.plugin.reaper;

import com.inlet.plugin.InletFetchReaper;
import org.apache.commons.lang.StringUtils;
import org.pf4j.Extension;
import org.pf4j.Plugin;
import org.pf4j.PluginWrapper;
import org.pf4j.RuntimeMode;

/**
 * @author Decebal Suiu
 */
public class ReaperAPlugin extends Plugin {

    public ReaperAPlugin(PluginWrapper wrapper) {
        super(wrapper);
    }

    @Override
    public void start() {
        System.out.println("WelcomePlugin.start()");
        // for testing the development mode
        if (RuntimeMode.DEVELOPMENT.equals(wrapper.getRuntimeMode())) {
            System.out.println(StringUtils.upperCase("WelcomePlugin"));
        }
    }

    @Override
    public void stop() {
        System.out.println("WelcomePlugin.stop()");
    }

    @Extension
    public static class ReaperA implements InletFetchReaper {

        @Override
        public void reap() {
            System.out.println("ReaperA");
        }
    }

}
我猜我的代码没有被扫描以找到@Extension注释。我不知道这是怎么回事

我希望其他人已经遇到了这个问题,并且知道一些我错过的简单事情。谁能告诉我为什么会这样?如果有人能告诉我Maven是如何在它生成的.jar文件中创建extensions.idx文件的,这可能会让我找到答案


谢谢你的帮助

我知道了。我为我的插件定义了如下接口:

package com.inlet.plugin;

public interface InletFetchReaper {
    void reap();
}
但它应该是(现在是):


我想这会很简单。

我想出来了。我为我的插件定义了如下接口:

package com.inlet.plugin;

public interface InletFetchReaper {
    void reap();
}
但它应该是(现在是):


我想这很简单。

我代表Decebal发布这个答案:

请为功能创建as请求。 我认为在PF4J中检查一下会很有用

例如,您将扩展名声明为:

@Extension
public static class ReaperA implements InletFetchReaper {
}

我认为,如果注释处理器通过反射验证
InletFetchReaper
(由您的扩展实现的单个接口)扩展了
ExtensionPoint

,那么这将非常有用。我代表Decebal发布这个答案:

请为功能创建as请求。 我认为在PF4J中检查一下会很有用

例如,您将扩展名声明为:

@Extension
public static class ReaperA implements InletFetchReaper {
}
我认为,如果注释处理器通过反射验证
InletFetchReaper
(由扩展实现的单个接口)扩展了
ExtensionPoint
,那么这将非常有用