这是我第一次使用maven,我想为apache-nifi实现一个处理器。现在,我正在使用一个专有的jar文件,这是一个SDK。它不在存储库上。所以我把它放在pom.xml
如下。由于本地Maven依赖关系jar中的java.lang.NoClassDefFoundError导致Apache Nifi失败。
<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
这似乎没有问题导入此依赖项。 maven构建过程也是如此。
如this tutorial所述,我使用mvn clean install
。这给了我一个nar
包作为输出。 (没有生成错误)
这nar
,这应该是放在$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文件。
如何克服这一点?