Created 12-12-2022 03:16 AM
Hello Experts,
I have custom processor code where I am using 2 controller services as input property.
DBCPService (jdbc connection pool) works fine without any issue,
but when I try to take input as MongoDBClientService (mongodb connection pool controller service) I get MongoDBClientService NoClassDefFoundError error during project build.
public class TrackRequestStatus extends AbstractProcessor {
public static final PropertyDescriptor DBDC_SERVICE = new PropertyDescriptor.Builder()
.name("JDBC Connection Pool")
.description("JDBC Connection Pool")
.required(false)
.dynamic(true)
.identifiesControllerService(DBCPService.class)
//.addValidator(StandardValidators.NON_EMPTY_VALIDATOR)
.build();
static final PropertyDescriptor CLIENT_SERVICE = new PropertyDescriptor.Builder()
.name("mongo-client-service")
.displayName("MongoDB Client Service")
.description("If configured, this property will use the assigned client service for connection pooling.")
.required(false)
.identifiesControllerService(MongoDBClientService.class)
.build();
<!-- https://mvnrepository.com/artifact/org.apache.nifi/nifi-standard-bundle -->
<dependency>
<groupId>org.apache.nifi</groupId>
<artifactId>nifi-standard-bundle</artifactId>
<version>${nifi16.version}</version>
<type>pom</type>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.nifi/nifi-dbcp-service-nar -->
<dependency>
<groupId>org.apache.nifi</groupId>
<artifactId>nifi-dbcp-service</artifactId>
<version>${nifi16.version}</version>
<scope>provided</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.nifi/nifi-dbcp-service-api -->
<dependency>
<groupId>org.apache.nifi</groupId>
<artifactId>nifi-dbcp-service-api</artifactId>
<version>${nifi16.version}</version>
<scope>provided</scope>
</dependency>
<!--<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongodb-driver-legacy</artifactId>
<version>4.7.2</version>
</dependency>-->
<!-- https://mvnrepository.com/artifact/org.apache.nifi/nifi-mongodb-bundle -->
<dependency>
<groupId>org.apache.nifi</groupId>
<artifactId>nifi-mongodb-bundle</artifactId>
<version>${nifi16.version}</version>
<type>pom</type>
</dependency>
<dependency>
<groupId>org.apache.nifi</groupId>
<artifactId>nifi-mongodb-client-service-api</artifactId>
<version>${nifi16.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.nifi</groupId>
<artifactId>nifi-mongodb-services</artifactId>
<version>${nifi16.version}</version>
<scope>provided</scope>
</dependency>
[INFO] Generating documentation for NiFi extensions in the NAR...
[INFO] Found NAR dependency of org.apache.nifi:nifi-standard-nar:nar:1.16.3:compile
[INFO] Found NAR dependency of org.apache.nifi:nifi-standard-services-api-nar:nar:1.16.3:compile
[INFO] Found NAR dependency of org.apache.nifi:nifi-jetty-bundle:nar:1.16.3:compile
[INFO] Found a dependency on version 1.16.3 of NiFi API
[WARNING] Could not generate extensions' documentation
java.lang.NoClassDefFoundError: org/apache/nifi/mongodb/MongoDBClientService
at com.o9solutions.nifi.processors.o9_custom_processors.TrackRequestStatus.<clinit> (TrackRequestStatus.java:71)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0 (Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance (NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance (DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance (Constructor.java:423)
at java.lang.Class.newInstance (Class.java:442)
at org.apache.nifi.NarMojo.writeDocumentation (NarMojo.java:629)
at org.apache.nifi.NarMojo.writeDocumentation (NarMojo.java:605)
at org.apache.nifi.NarMojo.generateDocumentation (NarMojo.java:577)
at org.apache.nifi.NarMojo.execute (NarMojo.java:499)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:210)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:156)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:148)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305)
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
at org.apache.maven.cli.MavenCli.execute (MavenCli.java:957)
at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:289)
at org.apache.maven.cli.MavenCli.main (MavenCli.java:193)
at sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke (Method.java:498)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406)
at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347)
Caused by: java.lang.ClassNotFoundException: org.apache.nifi.mongodb.MongoDBClientService
at java.net.URLClassLoader.findClass (URLClassLoader.java:387)
at java.lang.ClassLoader.loadClass (ClassLoader.java:418)
at java.lang.ClassLoader.loadClass (ClassLoader.java:351)
at com.o9solutions.nifi.processors.o9_custom_processors.TrackRequestStatus.<clinit> (TrackRequestStatus.java:71)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0 (Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance (NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance (DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance (Constructor.java:423)
at java.lang.Class.newInstance (Class.java:442)
at org.apache.nifi.NarMojo.writeDocumentation (NarMojo.java:629)
at org.apache.nifi.NarMojo.writeDocumentation (NarMojo.java:605)
at org.apache.nifi.NarMojo.generateDocumentation (NarMojo.java:577)
at org.apache.nifi.NarMojo.execute (NarMojo.java:499)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:210)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:156)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:148)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305)
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
at org.apache.maven.cli.MavenCli.execute (MavenCli.java:957)
at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:289)
at org.apache.maven.cli.MavenCli.main (MavenCli.java:193)
at sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke (Method.java:498)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406)
at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347)
[INFO] Building jar: D:\Project\Platform\Source\IntelliJ-O9Git\Nifi\nifi-dev-repo\atocl\o9_custom_processors\nifi-o9_custom_processors-nar\target\nifi-o9_custom_processors-nar-nifi16-1.0-SNAPSHOT.nar
[INFO]
[INFO] --- maven-site-plugin:3.11.0:attach-descriptor (attach-descriptor) @ nifi-o9_custom_processors-nar ---
[INFO] Skipping because packaging 'nar' is not pom.
[INFO]
[INFO] --- maven-install-plugin:2.5.2:install (default-install) @ nifi-o9_custom_processors-nar ---
Can some one please help to resolve this ?
Thanks
Mahendra
Created 12-12-2022 09:16 PM
@steven-matison - thank you.
Found out the reason for NoClassdef error it was due to the missing nar dependency in my NAR generation project pom.
Need to add "nifi-mongodb-nar" dependency to make use of these mongo related classes as they are not part of standard nar.
But I am already using "nifi-standard-nar" as dependency in NAR project I cant use one more, so had drop down this idea and write my own Mongo controller service.
Created 12-12-2022 05:42 AM
@hegdemahendra Awesome to see you making custom processors. A few things that might help:
That said, you may find more advanced nifi help engaging with the nifi developer community on slack or the mailing list. You can find the slack invite link at the bottom of that page.
Created 12-12-2022 09:16 PM
@steven-matison - thank you.
Found out the reason for NoClassdef error it was due to the missing nar dependency in my NAR generation project pom.
Need to add "nifi-mongodb-nar" dependency to make use of these mongo related classes as they are not part of standard nar.
But I am already using "nifi-standard-nar" as dependency in NAR project I cant use one more, so had drop down this idea and write my own Mongo controller service.