Correct :)

Technically we do support deploying extensions in JARs, but if you did
that you would only be able to utilize JARs that are directly in lib,
and since nifi-utils is not one of those, it explains why your
processor coming from the JAR cannot find StandardValidators.

Long story short, I think removing the JAR and copying in your NAR should work.

-Bryan


On Mon, Nov 6, 2017 at 1:20 PM, Phil H <[email protected]> wrote:
> Hey, now I see the problem - I had (somehow?!?) managed to copy the JAR file 
> rather than the NAR file
>
>
>
>> On 7 Nov 2017, at 5:17 am, Phil H <[email protected]> wrote:
>>
>> Thanks Bryan,
>>
>> This new NAR does not appear in the extensions directory (my other working 
>> ones do).
>>
>> As for your second question
>>
>> [phil@localhost JSONCondenser]$ ls  ~/nifi-1.3.0/lib/ | grep jar
>> javax.servlet-api-3.1.0.jar
>> jcl-over-slf4j-1.7.25.jar
>> jetty-schemas-3.1.jar
>> jul-to-slf4j-1.7.25.jar
>> log4j-over-slf4j-1.7.25.jar
>> logback-classic-1.2.3.jar
>> logback-core-1.2.3.jar
>> nifi-api-1.3.0.jar
>> nifi-framework-api-1.3.0.jar
>> nifi-JSONCondenser-processors-0.1.jar
>> nifi-nar-utils-1.3.0.jar
>> nifi-properties-1.3.0.jar
>> nifi-runtime-1.3.0.jar
>> slf4j-api-1.7.25.jar
>>
>>
>>> On 7 Nov 2017, at 5:13 am, Bryan Bende <[email protected]> wrote:
>>>
>>> Thanks for the poms.
>>>
>>> Can you provide the output of listing
>>> NIFI_HOME/work/nar/extensions/<your-nar>.nar-unpacked/META-INF/bundled-dependencies/
>>> ?
>>>
>>> and also the output of listing JARs that are in NiFi's lib directory?
>>> ls -l NIFI_HOME/lib/ | grep jar
>>>
>>> Want to verify that nifi-utils JAR is actually in your NAR and also
>>> that no other unexpected JARs are in your lib directory.
>>>
>>> Thanks,
>>>
>>> Bryan
>>>
>>> On Mon, Nov 6, 2017 at 12:48 PM, Phil H <[email protected]> wrote:
>>>> ./pom.xml (Note that this issue occurred BEFORE I added the external JAR 
>>>> dependency, and I have that exact same org.json dependency in a bunch of 
>>>> other processors I have written without issue)
>>>>
>>>> <project xmlns="http://maven.apache.org/POM/4.0.0"; 
>>>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
>>>> xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
>>>> http://maven.apache.org/xsd/maven-4.0.0.xsd";>
>>>>   <modelVersion>4.0.0</modelVersion>
>>>>
>>>>   <parent>
>>>>       <groupId>org.apache.nifi</groupId>
>>>>       <artifactId>nifi-nar-bundles</artifactId>
>>>>       <version>1.3.0</version>
>>>>   </parent>
>>>>
>>>>   <repositories>
>>>>       <repository>
>>>>           <id>project.local</id>
>>>>           <name>projects</name>
>>>>           <url>file:${project.basedir}/repo</url>
>>>>       </repository>
>>>>   </repositories>
>>>>
>>>>   <groupId>com.jidmu</groupId>
>>>>   <artifactId>JSONCondenser</artifactId>
>>>>   <version>0.1</version>
>>>>   <packaging>pom</packaging>
>>>>
>>>>   <modules>
>>>>       <module>nifi-JSONCondenser-processors</module>
>>>>       <module>nifi-JSONCondenser-nar</module>
>>>>   </modules>
>>>>
>>>>   <dependencies>
>>>>       <dependency>
>>>>           <groupId>org.json</groupId>
>>>>           <artifactId>JSON</artifactId>
>>>>           <version>1.0</version>
>>>>       </dependency>
>>>>   </dependencies>
>>>>
>>>> </project>
>>>>
>>>>
>>>>
>>>> ./nifi-JSONCondenser-processors/pom.xml
>>>> <project xmlns="http://maven.apache.org/POM/4.0.0"; 
>>>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
>>>> xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
>>>> http://maven.apache.org/xsd/maven-4.0.0.xsd";>
>>>>   <modelVersion>4.0.0</modelVersion>
>>>>
>>>>   <parent>
>>>>       <groupId>com.jidmu</groupId>
>>>>       <artifactId>JSONCondenser</artifactId>
>>>>       <version>0.1</version>
>>>>   </parent>
>>>>
>>>>   <artifactId>nifi-JSONCondenser-processors</artifactId>
>>>>   <packaging>jar</packaging>
>>>>
>>>>   <dependencies>
>>>>       <dependency>
>>>>           <groupId>org.apache.nifi</groupId>
>>>>           <artifactId>nifi-api</artifactId>
>>>>       </dependency>
>>>>       <dependency>
>>>>           <groupId>org.apache.nifi</groupId>
>>>>           <artifactId>nifi-utils</artifactId>
>>>>       </dependency>
>>>>       <dependency>
>>>>           <groupId>org.apache.nifi</groupId>
>>>>           <artifactId>nifi-mock</artifactId>
>>>>           <scope>test</scope>
>>>>       </dependency>
>>>>       <dependency>
>>>>           <groupId>org.slf4j</groupId>
>>>>           <artifactId>slf4j-simple</artifactId>
>>>>           <scope>test</scope>
>>>>       </dependency>
>>>>       <dependency>
>>>>           <groupId>junit</groupId>
>>>>           <artifactId>junit</artifactId>
>>>>           <scope>test</scope>
>>>>       </dependency>
>>>>   </dependencies>
>>>> </project>
>>>>
>>>> ./nifi-JSONCondenser-nar/pom.xml
>>>> <project xmlns="http://maven.apache.org/POM/4.0.0"; 
>>>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
>>>> xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
>>>> http://maven.apache.org/xsd/maven-4.0.0.xsd";>
>>>>   <modelVersion>4.0.0</modelVersion>
>>>>
>>>>   <parent>
>>>>       <groupId>com.jidmu</groupId>
>>>>       <artifactId>JSONCondenser</artifactId>
>>>>       <version>0.1</version>
>>>>   </parent>
>>>>
>>>>   <artifactId>nifi-JSONCondenser-nar</artifactId>
>>>>   <version>0.1</version>
>>>>   <packaging>nar</packaging>
>>>>   <properties>
>>>>       <maven.javadoc.skip>true</maven.javadoc.skip>
>>>>       <source.skip>true</source.skip>
>>>>   </properties>
>>>>
>>>>   <dependencies>
>>>>       <dependency>
>>>>           <groupId>com.jidmu</groupId>
>>>>           <artifactId>nifi-JSONCondenser-processors</artifactId>
>>>>           <version>0.1</version>
>>>>       </dependency>
>>>>   </dependencies>
>>>>
>>>> </project>
>>>>
>>>>
>>>>
>>>>> On 7 Nov 2017, at 4:39 am, Bryan Bende <[email protected]> wrote:
>>>>>
>>>>> It is most likely an issue with the Maven configuration in one of your 
>>>>> modules.
>>>>>
>>>>> Can you share your project, or the pom files for the processors, NAR,
>>>>> and bundle?
>>>>>
>>>>> Thanks,
>>>>>
>>>>> Bryan
>>>>>
>>>>>
>>>>> On Mon, Nov 6, 2017 at 12:20 PM, Phil H <[email protected]> wrote:
>>>>>> Nifi version is 1.3.0, running on Java 1.8.0_131, running on a 
>>>>>> out-of-the-box CentOS (if that’s relevant)
>>>>>>
>>>>>>> On 7 Nov 2017, at 4:17 am, Phil H <[email protected]> wrote:
>>>>>>>
>>>>>>> I added the StandardValidators reference back in and the original error 
>>>>>>> reoccurs.  The offending code (which compiles fine using the same JDK) 
>>>>>>> is totally standard stuff:
>>>>>>>
>>>>>>> public static final PropertyDescriptor ID_PATH = new PropertyDescriptor
>>>>>>>         .Builder().name("ID_PATH")
>>>>>>>         .displayName("JSON ID Path")
>>>>>>>         .description("The path to the JSON attribute that represents 
>>>>>>> the unique ID for the object")
>>>>>>>         .addValidator(StandardValidators.NON_BLANK_VALIDATOR)
>>>>>>>         .required(true)
>>>>>>>         .build();
>>>>>>>
>>>>>>>
>>>>>>> 2017-11-07 04:13:46,855 ERROR [main] org.apache.nifi.NiFi Failure to 
>>>>>>> launch NiFi due to java.util.ServiceConfigurationError: 
>>>>>>> org.apache.nifi.processor.Processor: Provider 
>>>>>>> com.jidmu.processors.JSONCondenser.JSONCondenser could not be 
>>>>>>> instantiated
>>>>>>> java.util.ServiceConfigurationError: 
>>>>>>> org.apache.nifi.processor.Processor: Provider 
>>>>>>> com.jidmu.processors.JSONCondenser.JSONCondenser could not be 
>>>>>>> instantiated
>>>>>>>    at java.util.ServiceLoader.fail(ServiceLoader.java:232)
>>>>>>>    at java.util.ServiceLoader.access$100(ServiceLoader.java:185)
>>>>>>>    at 
>>>>>>> java.util.ServiceLoader$LazyIterator.nextService(ServiceLoader.java:384)
>>>>>>>    at java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:404)
>>>>>>>    at java.util.ServiceLoader$1.next(ServiceLoader.java:480)
>>>>>>>    at 
>>>>>>> org.apache.nifi.nar.ExtensionManager.loadExtensions(ExtensionManager.java:138)
>>>>>>>    at 
>>>>>>> org.apache.nifi.nar.ExtensionManager.discoverExtensions(ExtensionManager.java:104)
>>>>>>>    at org.apache.nifi.web.server.JettyServer.start(JettyServer.java:699)
>>>>>>>    at org.apache.nifi.NiFi.<init>(NiFi.java:160)
>>>>>>>    at org.apache.nifi.NiFi.main(NiFi.java:267)
>>>>>>> Caused by: java.lang.NoClassDefFoundError: 
>>>>>>> org/apache/nifi/processor/util/StandardValidators
>>>>>>>    at 
>>>>>>> com.jidmu.processors.JSONCondenser.JSONCondenser.<clinit>(JSONCondenser.java:58)
>>>>>>>    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 
>>>>>>> java.util.ServiceLoader$LazyIterator.nextService(ServiceLoader.java:380)
>>>>>>>    ... 7 common frames omitted
>>>>>>> Caused by: java.lang.ClassNotFoundException: 
>>>>>>> org.apache.nifi.processor.util.StandardValidators
>>>>>>>    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
>>>>>>>    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
>>>>>>>    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)
>>>>>>>    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
>>>>>>>    ... 14 common frames omitted
>>>>>>>
>>>>>>>
>>>>>>>> On 7 Nov 2017, at 4:02 am, Joe Witt <[email protected]> wrote:
>>>>>>>>
>>>>>>>> Can you share the code by chance for a review?  Otherwise, you'll want
>>>>>>>> to add a debugger at runtime and examine the context classloader as it
>>>>>>>> goes through to see where it goes wonky.
>>>>>>>>
>>>>>>>> What version are you on?
>>>>>>>>
>>>>>>>> Thanks
>>>>>>>>
>>>>>>>> On Mon, Nov 6, 2017 at 11:58 AM, Phil H <[email protected]> wrote:
>>>>>>>>> Hi guys,
>>>>>>>>>
>>>>>>>>> I have just (today) started having issues with a new processor I've 
>>>>>>>>> written where a seemingly random class (e.g.: StandardValidators) 
>>>>>>>>> fails to load when NiFi is initializing. I've created this processor 
>>>>>>>>> like all my others (using the maven archetype) and the VM I'm running 
>>>>>>>>> it on has not changed versions of any software.
>>>>>>>>>
>>>>>>>>> I removed any reference to StandardValidators, and the NAR then 
>>>>>>>>> loaded successfully. As I added some more functionality, I then had 
>>>>>>>>> the same ClassNotFoundException occur with a different random class.
>>>>>>>>>
>>>>>>>>> Because I have used the maven archetype, all my other processors 
>>>>>>>>> obviously use StandardValidators, so it's not like the class itself 
>>>>>>>>> is somehow corrupted. This feels like either a NiFi or maybe even JVM 
>>>>>>>>> bug (or other issue that is surfacing as this ClassNotFoundException).
>>>>>>>>>
>>>>>>>>> Pulling my hair out here - would love some help!
>>>>>>>>>
>>>>>>>>> Cheers,
>>>>>>>>> Phil
>>>>>>>
>>>>>>
>>>>
>>
>

Reply via email to