This should be a simple matter of linking and loading. I mean, if I
build/link using /nifi-api-0.7.1.jar/ then load on NiFi 0.7.1, there's
no way that any symbol of NiFi origin, in this case, ComponentLog,
should go absent. That symbol's use in my code was satisfied by
importing from the NiFi API JAR and it should of course be satisfied at
runtime.
What am I missing here? (It's probably staring me in the face, but I
don't see it.)
On 12/06/2016 02:26 PM, Russell Bateman wrote:
I've had this problem with an old version for some time (I'm really
concentrating more on NiFi 1.x now) and I have to fix it. I'm pulling
my hair out a bit. We eliminated all use of ProcessorLogeven in this
older code that we're trying to keep running on 0.7.1 and maintaining
when we must.
In /nifi-api-0.7.1.jar/ there is certainly ComponentLog.class, but on
starting NiFi, I keep getting what's below in /nifi-app.log/.
.
.
.
2016-12-06 14:11:57,228 ERROR [main] org.apache.nifi.NiFi Failure to
launch NiFi due to java.util.ServiceConfigurationError:
org.apache.nifi.processor.Processor:
Provider com.imatsolutions.nifi.processor.ContentIdentifier could not
be instantiated
java.util.ServiceConfigurationError:
org.apache.nifi.processor.Processor: Provider
com.imatsolutions.nifi.processor.ContentIdentifier could not be
instantiated
at java.util.ServiceLoader.fail(ServiceLoader.java:232)
~[na:1.8.0_112]
at java.util.ServiceLoader.access$100(ServiceLoader.java:185)
~[na:1.8.0_112]
at
java.util.ServiceLoader$LazyIterator.nextService(ServiceLoader.java:384)
~[na:1.8.0_112]
at
java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:404)
~[na:1.8.0_112]
at java.util.ServiceLoader$1.next(ServiceLoader.java:480)
~[na:1.8.0_112]
at
org.apache.nifi.nar.ExtensionManager.loadExtensions(ExtensionManager.java:107)
~[nifi-nar-utils-0.7.1.jar:0.7.1]
at
org.apache.nifi.nar.ExtensionManager.discoverExtensions(ExtensionManager.java:88)
~[nifi-nar-utils-0.7.1.jar:0.7.1]
at org.apache.nifi.NiFi.<init>(NiFi.java:120)
~[nifi-runtime-0.7.1.jar:0.7.1]
at org.apache.nifi.NiFi.main(NiFi.java:227)
~[nifi-runtime-0.7.1.jar:0.7.1]
*Caused by: java.lang.NoSuchMethodError:
com.imatsolutions.nifi.processor.ContentIdentifier.getLogger()Lorg/apache/nifi/logging/ComponentLog;*
* at
com.imatsolutions.nifi.processor.ContentIdentifier.<init>(ContentIdentifier.java:48)
~[medical-filter-1.0.0.jar:na]*
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native
Method) ~[na:1.8.0_112]
at
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
~[na:1.8.0_112]
at
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
~[na:1.8.0_112]
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
~[na:1.8.0_112]
at java.lang.Class.newInstance(Class.java:442) ~[na:1.8.0_112]
at
java.util.ServiceLoader$LazyIterator.nextService(ServiceLoader.java:380)
~[na:1.8.0_112]
... 6 common frames omitted
2016-12-06 14:11:57,229 INFO [Thread-1] org.apache.nifi.NiFi
Initiating shutdown of Jetty web server...
2016-12-06 14:11:57,230 INFO [Thread-1] org.apache.nifi.NiFi Jetty web
server shutdown completed (nicely or otherwise).
To answer the obvious questions...
public class *ContentIdentifier* extends BaseIdentifierProcessor
In onTrigger(), there is this lone use:
getLogger().error( message );
public abstract class BaseIdentifierProcessor extends AbstractProcessor
There is no use of any logger in this class. You already know
AbstractProcessor.
Is there something I'm missing?