Login  Register

Re: Incorporating a plugin into the ij.jar file

Posted by ctrueden on Apr 20, 2018; 9:33pm
URL: http://imagej.273.s1.nabble.com/Incorporating-a-plugin-into-the-ij-jar-file-tp5020540p5020544.html

Hi Dan,

Thanks for the additional details.

If I understand correctly, you are talking about using this project:

  Plugins>Skeleton, "Skeletonize (2D/3D)"
  sc.fiji.skeletonize3D.Skeletonize3D_
  https://github.com/fiji/Skeletonize3D

In lieu of ImageJ1's built-in:

  Process>Binary>Skeletonize
  ij.plugin.filter.Binary("skel")

If so, why not simply depend on the Skeletonize3D_.jar library in addition
to ij.jar? Why do you need to create a modified ij.jar?

Is your application code published anywhere?

Regards,
Curtis

--
Curtis Rueden
LOCI software architect - https://loci.wisc.edu/software
ImageJ2 lead, Fiji maintainer - https://imagej.net/User:Rueden
Did you know ImageJ has a forum? http://forum.imagej.net/


On Fri, Apr 20, 2018 at 4:16 PM, Dan McDonald <
[hidden email]> wrote:

> Hi Curtis,
>
> I have a java application which runs ImageJ in a headless mode.  I wrote
> all of the ImageJ macro code but not the java application itself.  ImageJ
> was bundled with an older version of skeletonize.  This ran just fine in my
> application.  I get improved performance with Ignacio's new version.
>
> I have used NetBeans to make simple changes to the Java application. I
> thought adding the Skeletonize3D plugin to the ImageJ internal plugins
> would be simple.  But I just don't know enough to make it work.
>
> Dan
>
> -----Original Message-----
> From: ImageJ Interest Group [mailto:[hidden email]] On Behalf Of
> Curtis Rueden
> Sent: Friday, April 20, 2018 4:19 PM
> To: [hidden email]
> Subject: Re: Incorporating a plugin into the ij.jar file
>
> Hi Dan,
>
> Before we dive into technical details: could you describe why you want to
> do this? What is your use case? Are you trying to make an "uber-JAR" [1]?
> If so, why?
>
> Regards,
> Curtis
>
> [1] https://imagej.net/Uber-JAR
>
> --
> Curtis Rueden
> LOCI software architect - https://loci.wisc.edu/software
> ImageJ2 lead, Fiji maintainer - https://imagej.net/User:Rueden
> Did you know ImageJ has a forum? http://forum.imagej.net/
>
>
> On Fri, Apr 20, 2018 at 2:16 PM, Dan McDonald <mcdonalddw@
> phenotypescreening.com> wrote:
>
> > Dear List,
> >
> >
> >
> > I would like to incorporate the Skeletonize (2D/3D) plugin into the
> ij.jar
> > file.  I have been unsuccessful in finding a way to do so.
> >
> >
> >
> > I have the Skeletonize (2D/3D) executable jar file located in my plugin
> > folder.  I successfully run the plugin on a daily basis when I use
> ImageJ.
> > I cannot figure out how to add a plugin that is in my plugin folder to
> the
> > ij.jar.
> >
> >
> >
> > I have "uncompressed" the ij.jar and placed the Skeletonize3D.class file
> in
> > the jar's plugin folder.  I then went into the IJ Properties.txt file and
> > modified it to add Skeletonize (2D/3D) as a user plugin. As shown below:
> >
> >
> >
> > # Install user plugins located in ij.jar to Plugins>User Plugins submenu
> >
> >
> >
> > user_plugins01="Skeletonize (2D/3D)",ij.plugin.Skeletonize3D_
> >
> >
> >
> > (I am not sure what the arguments above are supposed to be.  I could not
> > find documentation on adding user plugins via the IJProperties.txt route.
> > What I did looked the closest to want other lines had in them.)
> >
> >
> >
> > I then rezipped everything.
> >
> >
> >
> > When next I startup ImageJ the plugin shows up on the user plugin menu as
> > expected.
> >
> >
> >
> > Unfortunately I get the following error messages when I select the
> > skeletonize function.
> >
> >
> >
> > ImageJ 1.51p; Java 1.8.0_141 [64-bit]; Linux 3.13.0-37-generic; 16MB of
> > 22020MB (<1%)
> >
> > java.lang.NoClassDefFoundError: ij/plugin/Skeletonize3D_ (wrong name:
> > Skeletonize3D_/Skeletonize3D_)
> >
> >                at java.lang.ClassLoader.defineClass1(Native Method)
> >
> >                at java.lang.ClassLoader.defineClass(ClassLoader.java:
> 763)
> >
> >                at
> > java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
> >
> >                at
> > java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
> >
> >                at java.net.URLClassLoader.access
> > $100(URLClassLoader.java:73)
> >
> >                at java.net.URLClassLoader$1.run(URLClassLoader.java:368)
> >
> >                at java.net.URLClassLoader$1.run(URLClassLoader.java:362)
> >
> >                at java.security.AccessController.doPrivileged(Native
> > Method)
> >
> >                at java.net.URLClassLoader.findCl
> > ass(URLClassLoader.java:361)
> >
> >                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)
> >
> >                at java.lang.Class.forName0(Native Method)
> >
> >                at java.lang.Class.forName(Class.java:264)
> >
> >                at ij.IJ.runPlugIn(IJ.java:184)
> >
> >                at ij.Executer.runCommand(Executer.java:137)
> >
> >                at ij.Executer.run(Executer.java:66)
> >
> >                at java.lang.Thread.run(Thread.java:748)
> >
> >
> >
> > I am not sure if my syntax is incorrect in IJProperties.txt or if I need
> to
> > do more than just drop a class file in the ij.jar plugin folder or both.
> >
> >
> >
> > I am not a java person.  Any assistance or pointers to documentation
> would
> > be much appreciated.
> >
> >
> >
> > Thank you,
> >
> >
> >
> > Dan
> >
> >
> >
> >
> >
> >
> >
> >
> > --
> > ImageJ mailing list: http://imagej.nih.gov/ij/list.html
> >
>
> --
> ImageJ mailing list: http://imagej.nih.gov/ij/list.html
>
> --
> ImageJ mailing list: http://imagej.nih.gov/ij/list.html
>

--
ImageJ mailing list: http://imagej.nih.gov/ij/list.html