Any reason why the commons-lang3 dependency is provided and not normal
compile scope?

Generally the only cases where a dependency should be provided are
when a parent NAR provides it (the API scenario earlier), or when it
is a jar directly in lib which means it is on the classpath of
everything (like nifi-api or slf4j).
On Tue, Oct 16, 2018 at 3:47 PM John McGinn <figgie...@sbcglobal.net> wrote:
>
> I have a directory /home/user/nifi-nars, which is listed in the 
> nifi.properties file located under the nifi-assembly directory from the 
> nifi-master code. That's where I redropped my NAR file at.
>
> The error was "due to uncaught Exception: java.lang.NoClassDefFoundError: 
> org/apache/commons/lang3/StringUtils". I added a provided dependency of 
> version 3.4 for commons-lang3 in my processors pom.xml. That worked 
> initially, but with the redropping of the NAR file, the error occurs. The 
> stacktrace points to the session.get() lambda function trying to use 
> StringUtils.isBlank(). (Again, this is a copy and renamed class of the Wait 
> Processor. Trying to turn it into a Yield, as it were, hold unless it's free 
> to move forward.)
> --------------------------------------------
> On Tue, 10/16/18, Bryan Bende <bbe...@gmail.com> wrote:
>
>  Subject: Re: Compiling custom processor
>  To: dev@nifi.apache.org
>  Date: Tuesday, October 16, 2018, 3:34 PM
>
>  There shouldn't be any issue
>  doing that, generally you just copy the
>  new
>  NAR into the lib directory and restart.
>
>  What were the specifics of the class not found
>  error?
>
>  On Tue, Oct 16, 2018 at
>  3:24 PM John McGinn <figgie...@sbcglobal.net>
>  wrote:
>  >
>  > And I'm
>  back.
>  >
>  > So, I had my
>  processor running, no errors, so things were good.
>  >
>  > I then add 2 if
>  statements with logger messages, run the same mvn command,
>  copied the new NAR on top of the old one, same versionId and
>  all, and now I get a class not found error, that didn't
>  occur before I stopped, redeployed and started. And I
>  can't delete the event in the queue even though source
>  and destination are stopped.
>  >
>  > Is there problems when redeploying a
>  custom processor NAR on top of itself? Even if the NiFi
>  instance is stopped? Serialization issues?
>  >
>  > Frustratedly
>  yours,
>  > John McGinn
>  >
>  >
>  --------------------------------------------
>  > On Tue, 10/16/18, John McGinn <figgie...@sbcglobal.net>
>  wrote:
>  >
>  >  Subject:
>  Re: Compiling custom processor
>  >  To: dev@nifi.apache.org
>  >  Date: Tuesday, October 16, 2018, 1:21
>  PM
>  >
>  >  Thanks
>  Bryan,
>  >
>  >  I
>  restarted with a fresh maven
>  >
>  generate, and only added the API to the processor pom,
>  and
>  >  then the API-NAR to the NAR pom.
>  I then figured out a
>  >  subsequent
>  dependency (lang3), and got that in, and now my
>  >  processor shows up in local NiFi
>  instance.
>  >
>  >
>  Regarding the copying of the standard
>  >
>  processor, when I copied Wait over, I renamed it from
>  Wait
>  >  to MyProcessorWait to be unique,
>  and not copied. I'm just
>  >
>  attempting changes to Wait without modifying the actual
>  one.
>  >  Also, thanks on the
>  META-INF/services file information.
>  >
>  >  Now I can debug and test.
>  >
>  >  Sincerely,
>  >  John McGinn
>  >
>  >
>  --------------------------------------------
>  >  On Tue, 10/16/18, Bryan Bende <bbe...@gmail.com>
>  >  wrote:
>  >
>  >   Subject: Re: Compiling custom
>  >  processor
>  >   To: dev@nifi.apache.org
>  >   Date: Tuesday, October 16, 2018,
>  9:52
>  >  AM
>  >
>  >   In general, if your processor
>  >   uses a controller service then the
>  >   processors pom file needs a provided
>  >  dependency
>  >   on
>  the API of the CS,
>  >   and your NAR pom
>  needs
>  >   a NAR dependency on the NAR
>  where the
>  >  CS API
>  >   is.
>  >
>  >   Example is
>  >
>  shown here in the section linking
>  >
>  processors and
>  >   controller
>  >   services - 
> https://cwiki.apache.org/confluence/display/NIFI/Maven+Projects+for+Extensions
>  >
>  >   Also, you do not
>  want to
>  >   include NiFI's standard
>  processors in
>  >  your
>  >   own NAR, this will result in two
>  >  copies of
>  >   every
>  standard processor.
>  >   You will want
>  to
>  >   copy whatever code you need into
>  your
>  >  own NAR.
>  >
>  >   In you last statement, if you
>  >   made a new processor in
>  >   nifi-standard-processors and it
>  didn't
>  >  show
>  >   up, it is most likely
>  >   because you didn't
>  >   update META-INF/services file to
>  >  include the new
>  >
>  processor.
>  >   On Tue, Oct 16, 2018
>  at
>  >   9:36 AM John McGinn
>  >   <amruginn-n...@yahoo.com.invalid>
>  >   wrote:
>  >   >
>  >   > Ok, I am
>  >
>  far from a maven expert, and am
>  >
>  struggling on this
>  >   problem.
>  >   >
>  >   > I
>  created
>  >   a new project using the
>  maven generate
>  >  process, and
>  compiled
>  >   that sample processor and
>  everything
>  >  was fine, and I could
>  >   see it in my local NiFi instance. I
>  >  then copied over the
>  >   Wait processor on top of the
>  >  MyProcessor.java class, changed
>  >   the package name, and the class
>  name,
>  >  and attempted to
>  >   compile. Got errors due to
>  dependency
>  >  issues. This is where
>  >   I get confused.
>  >
>  >
>  >   > In
>  >
>  the processor directory, I modify the
>  >
>  pom.xml with a
>  >   dependency line for
>  nifi-api,
>  >  nifi-utils,
>  >
>  >
>  nifi-distribute-cache-client-service-api and
>  >   nifi-standard-processors. This
>  seemed
>  >  to make things work,
>  >   and I get a 33 meg NAR file, which
>  >  contains lots of JARs. I
>  >   load that up, and I get a problem
>  with
>  >  CalculateStats, or
>  >   similar, because of
>  >  RecordReaderFactory. I go back in and
>  >   include
>  >
>  nifi-record-serialization-services, and it compiles,
>  >   and the JAR is included in the NAR
>  >  file now, and I still get
>  >   class not found.
>  >
>   >
>  >   >
>  >
>  I've also tried to change the
>  >
>  dependencies to a status
>  >   of
>  provided, and therefore get a
>  >  minimal
>  25k or so NAR file
>  >   with no JARs
>  included. I get the same
>  >  issue with
>  the class
>  >   not found.
>  >   >
>  >   > I
>  had
>  >   also attempted to copy Wait.java
>  to
>  >  AnotherWait.java within
>  >   the actually NiFi source code, and
>  it
>  >  compiles, and shows up
>  >   in the JARs and NARs as I'd
>  expect,
>  >  but I cannot get to
>  >   it within my NiFi instance.
>  >   >
>  >   > Can
>  someone let me know what I'm
>  >
>  doing
>  >   wrong.
>  >
>  >
>  >   > Thanks,
>  >   > John McGinn
>  >

Reply via email to