這是我第一次使用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文件。
如何克服這一點?