http://imagej.273.s1.nabble.com/Incorporating-a-plugin-into-the-ij-jar-file-tp5020540p5020543.html
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.
> 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>