<div dir="ltr">Hi Gaetano,<div><br></div><div>> <span style="font-family:arial,sans-serif;font-size:13px">I created a small example that requires my library</span></div><div><span style="font-family:arial,sans-serif;font-size:13px"><br></span></div><div>Thanks for the working example. I did some digging, and here is what I discovered:</div><div><br></div><div>- Vanilla ImageJ1 does not have a "jars/" folder, so unpacking your JAR there would not work in that scenario.</div><div><br></div><div>- Having an unpacked directory structure in "plugins/" _does_ work, though.</div><div><br></div><div>- The reason it doesn't work in ImageJ2 is because ImageJ2 recursively adds all subdirectories of all classpath directory elements to the effective classpath of the plugin class loader.</div><div><br></div><div>- I discussed with Johannes, and he decided not to support unpacked class files anymore [1].</div><div><br></div><div>Personally, I think there is a bug lurking there -- probably only the "plugins/" folder should have the recursive behavior described above -- but it is an edge case which we do not have time to fix right now. However, if you feel strongly about the issue, you are very welcome to submit a pull request addressing it!</div><div><br></div><div>Otherwise, I'd encourage you to switch to an IDE, and/or JAR-based development model. Let us know if you need further guidance with it. See also: <a href="http://imagej.net/Development">http://imagej.net/Development</a></div><div><br></div><div>Regards,</div><div>Curtis</div><div><br></div><div>[1] <a href="http://code.imagej.net/chatlogs/imagejdev?times=prefix&start-date=2014-09-26&start-time=1500&end-date=2014-09-26&end-time=1700">http://code.imagej.net/chatlogs/imagejdev?times=prefix&start-date=2014-09-26&start-time=1500&end-date=2014-09-26&end-time=1700</a></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Sep 16, 2014 at 4:54 AM, Gaetano Impoco <span dir="ltr"><<a href="mailto:gaetano@impoco.it" target="_blank">gaetano@impoco.it</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi Curtis,<br>
<span class=""><br>
> Could you please provide a minimal, complete, verifiable example<br>
> demonstrating the issue?<br>
<br>
</span>I created a small example that requires my library (please, download it at<br>
<a href="http://www.impoco.it/files/gijLib.jar" target="_blank">http://www.impoco.it/files/gijLib.jar</a>)<br>
<br>
-------------<br>
<br>
import ij.*;<br>
import ij.process.*;<br>
import ij.plugin.filter.*;<br>
import java.awt.*;<br>
import java.awt.geom.*;<br>
import gijlib.binary.*;<br>
import gijlib.geom.*;<br>
<br>
<br>
public class Example_ implements PlugInFilter<br>
{<br>
  public int setup(String arg, ImagePlus imp)<br>
  {<br>
    return DOES_8G;<br>
  }<br>
<br>
  public void run(ImageProcessor ip)<br>
  {<br>
    ContourFollower cf = new ContourFollower(ip);<br>
    if(cf.getNContours() != 1)<br>
    {<br>
      IJ.error("The input image should contain one and only one object!\nFound<br>
"+cf.getNContours());<br>
      return;<br>
    }<br>
<br>
    Point[] contour = cf.getContour(0);<br>
    Point2D cHull[] = ConvexHull.grahamsScan(contour);<br>
<br>
    Line2D  diam    = PolygonUtilities.computeDiameter(cHull);<br>
    Line2D  odiam   = PolygonUtilities.computeOrthogonalDiameter(cHull, diam);<br>
    OrientedRectangle obbox = PolygonUtilities.computeBoundingRect(diam, odiam);<br>
  }<br>
<br>
}<br>
<br>
-------------<br>
<br>
When I put gijLib.jar in the "jars" directory and compile this class using the<br>
--javac option of the ij2 launcher, everything is ok. When I uncompress the JAR<br>
file into the "jars" directory, the compiler cannot find the classes in the<br>
library.<br>
<br>
Moreover, if I try to run a plugin that includes a class in the same directory<br>
(but not using packages) the compiler fails, as well. I avoid this problem<br>
using the option --class-path $HOME/Fiji.app/jars/<br>
<br>
Hope I gave enough information.<br>
<br>
Thank you<br>
<span class="HOEnZb"><font color="#888888">Gaetano<br>
</font></span><span class="im HOEnZb"><br>
<br>
<br>
<br>
Quoting Curtis Rueden <<a href="mailto:ctrueden@wisc.edu">ctrueden@wisc.edu</a>>:<br>
<br>
> Hi Gaetano,<br>
><br>
> > In my brand new Fiji installation, I can import my library only if I<br>
> > archive all .class files into a JAR file.<br>
><br>
> IIUC, what you describe is still supposed to work.<br>
><br>
><br>
</span><div class="HOEnZb"><div class="h5">> <a href="http://imagej.net/Bug_reporting_best_practices" target="_blank">http://imagej.net/Bug_reporting_best_practices</a><br>
><br>
> Regards,<br>
> Curtis<br>
><br>
> On Fri, Sep 12, 2014 at 6:05 AM, Gaetano Impoco <<a href="mailto:gaetano@impoco.it">gaetano@impoco.it</a>> wrote:<br>
><br>
> > Dear all,<br>
> > I developed a custom library for my own convenience that used to work in<br>
> > ImageJ1.x. In my old IJ1 installation I used to add the library root<br>
> > directory<br>
> > to the Java CLASSPATH (using a simple bash script).<br>
> > In my brand new Fiji installation, I can import my library only if I<br>
> > archive all<br>
> > .class files into a JAR file. I would like to use JARs only for<br>
> > deployment. Is<br>
> > there any way to include the "uncompressed" (development version) library?<br>
> ><br>
> > Thank you<br>
> > Gaetano<br>
> ><br>
> ><br>
> ><br>
> > _______________________________________________<br>
> > ImageJ-devel mailing list<br>
> > <a href="mailto:ImageJ-devel@imagej.net">ImageJ-devel@imagej.net</a><br>
> > <a href="http://imagej.net/mailman/listinfo/imagej-devel" target="_blank">http://imagej.net/mailman/listinfo/imagej-devel</a><br>
> ><br>
><br>
<br>
<br>
</div></div></blockquote></div><br></div>