2016-02-12 106 views
1

这是我第一次使用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文件。

如何克服这一点?

回答