由于本地 Maven 依赖项 jar 中的 java.lang.NoClassDefFoundError,Apache Nifi 失败。
Apache Nifi failure due to java.lang.NoClassDefFoundError in a local maven dependency jar.
第一次使用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
,导入此依赖项似乎没有问题。 Maven 构建过程也是如此。
我按照 this tutorial 中的说明使用 mvn clean install
。这给了我一个 nar
包作为输出。 (没有构建错误)
本应放在 $NIFI_HOME/lib
目录中的 nar
并未捆绑上述本地 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 中的 class。
如果我查看 nar
文件的文件夹结构,在 META-INF/bundled-dependencies/
中我会看到 pom 中定义的所有其他依赖 jar 文件,但不是我使用的本地 jar。
如何克服这个问题?
以下 Whosebug 问题似乎与您提出的问题类似。
Maven 2 assembly with dependencies: jar under scope "system" not included
尝试将依赖项放在本地存储库中并在 pom 中声明它。
第一次使用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
,导入此依赖项似乎没有问题。 Maven 构建过程也是如此。
我按照 this tutorial 中的说明使用 mvn clean install
。这给了我一个 nar
包作为输出。 (没有构建错误)
本应放在 $NIFI_HOME/lib
目录中的 nar
并未捆绑上述本地 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 中的 class。
如果我查看 nar
文件的文件夹结构,在 META-INF/bundled-dependencies/
中我会看到 pom 中定义的所有其他依赖 jar 文件,但不是我使用的本地 jar。
如何克服这个问题?
以下 Whosebug 问题似乎与您提出的问题类似。 Maven 2 assembly with dependencies: jar under scope "system" not included
尝试将依赖项放在本地存储库中并在 pom 中声明它。