这是我第一次使用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>
我正在使用intelliJ
which 导入此依赖项似乎没有问题。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。
如何克服这一点?