Support Questions

Find answers, ask questions, and share your expertise

java.lang.NoClassDefFoundError: org/apache/nifi/mongodb/MongoDBClientService error while building nifi custom processor maven project

avatar
Master Collaborator

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

1 ACCEPTED SOLUTION

avatar
Master Collaborator

@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.

 

View solution in original post

2 REPLIES 2

avatar

@hegdemahendra Awesome to see you making custom processors.  A few things that might help:

 

  1. Make sure this controller service exists in your nifi,  some nifi builds do not include all nars
  2. Make sure this controller service exists in your project dependencies

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.

avatar
Master Collaborator

@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.