1

这是我第一次使用maven,我想为apache-nifi实现一个处理器。现在为此我使用了一个专有的 jar 文件,它是一个 SDK。它不在存储库中。因此我把它放在pom.xml下面。

<dependency>
        <groupId>KS</groupId>
        <artifactId>En-SDK</artifactId>
        <version>1.0</version>
        <scope>system</scope>
        <systemPath>${project.basedir}/lib/En-SDK-Java.jar</systemPath>
</dependency>

我正在使用intelliJwhich 导入此依赖项似乎没有问题。Maven构建过程也是如此。

我按照本教程mvn clean install中的说明使用。这给了我一个包作为输出。(没有构建错误)nar

nar应该放在目录中的this$NIFI_HOME/lib不会捆绑所述本地 jar。

如果我将此 nar 文件放在所需的目录中并启动apache-nifi

 INFO [main] org.apache.nifi.nar.NarClassLoaders Loaded NAR file: /..././work/nar/extensions/myNar.nar

似乎是由 加载的NarClassLoaders,但之后我得到一个异常并且nifi没有启动。

java.lang.NoClassDefFoundError: com/kls/../../SubscriptionInterface

SubscriptionInterface是来自上述本地 jar 的类。

如果我查看nar文件的文件夹结构,META-INF/bundled-dependencies/我会看到在 pom 中定义的所有其他依赖 jar 文件,但没有看到我使用的本地 jar。

如何克服这一点?

4

1 回答 1

2

以下 Stackoverflow 问题似乎与您所问的类似。 具有依赖项的 Maven 2 程序集:不包括范围“系统”下的 jar

尝试将依赖项放在本地存储库中并在 pom.xml 中声明它。

于 2016-02-12T04:59:01.900 回答