[ImageJ-devel] [fiji-devel] Re: jython scripting, No compatible service: io.scif.SCIFIOService

Harri Jäälinoja harri.jaalinoja at helsinki.fi
Wed Feb 26 09:19:49 CST 2014


Hi Mark,

thanks a lot, setting CLASSPATH did the trick, after I removed the 
unnecessary lines. I didn't understand them anyway, I was just parroting 
http://fiji.sc/ImgLib2_Examples.

Now it sort of works, but I still don't see the image. I get an icon 
with the Java guy on the launcher bar, with the image name and "(V) 
(3.1%)". If I click that, all other windows disappear and there a small 
stick-like artefact on the top of the screen, but nothing more.

Good progress anyway, more tomorrow.

Harri

On 26/02/14 16:41, Mark Hiner wrote:
> Hi Harri,
>
>     java.lang.
>     IllegalArgumentException: java.lang.IllegalArgumentException: No
>     compatible service: io.scif.SCIFIOService
>     hajaalin at biotek973:~/Software/
>     mvn-IJ2$ jar tvf target/dependency/scifio-0.9.2.jar |grep
>     SCIFIOService
>        150 Fri Feb 14 16:24:24 EET 2014 io/scif/SCIFIOService.class
>
>
> So this exception may be slightly misleading. SCIFIOService is a 
> marker interface for all the services that are part of SCIFIO. When an 
> org.scijava.Context is initialized as it is here, it's typically given 
> a set of base service interfaces and then loads all implementations of 
> that service. So it seems like the Context knows about the 
> SCIFIOService interface, but didn't discover any implementations 
> (things like DefaultFormatService, DefaultImgUtilityService).
>
>  So this brings me to my next point: I think there is either a) a bug 
> in jython where annotations are not preserved or b) a bug with the 
> class loading logic used by Fiji/IJ2. I am leaning towards a) right now.
>
>  I am using an Ubuntu 12.04 64-bit VM. I installed Jython 2.5.3, but I 
> suspect you can get this working with 2.5.1.
>
>  Anyway, I went back to OSX and tested jython with the -Dpython.path 
> option, and got the same missing service exception. But! If I set 
> $CLASSPATH (java automatically picks up the $CLASSPATH environment 
> variable) and run the equivalent of:
>
> jython macros/imglib0.py /home/hajaalin/Data/Misha/composite1.ome.tif
>
> it works! Thus I believe that python.path has a bug and although 
> jython supports discovery of classes on python.path, it does not 
> preserve their annotations (or some similar metadata is being lost).
>
> So instead of setting CP and passing it via -Dpython.path, just use:
>
> export CLASSPATH=`find 
> /home/hajaalin/Software/fiji-20140219/Fiji.app/jars -name '*.jar' |sed 
> ':a;N;$!ba;s/\n/:/g'`
>
> A simple rule of thumb is, try running a random SCIFIO class like 
> "java io.scif.SCIFIOService" from the command line. If you get a 
> NoClassDef error, your CLASSPATH is not configured correctly. If you 
> get a "NoSuchMethodError: main", your CLASSPATH is correct and your 
> jython will pick up all the desired classes.
>
> Moving on...
>
> jython macros/imglib0.py /home/hajaalin/Data/Misha/composite1.ome.tif
>
> ^ That then works a bit better with my CLASSPATH set, except I get a 
> different runtime error about how ImgMode.CELL can't be coerced to 
> ImgMode. (same error I get when running using Fiji).
>
> I notice that you aren't actually using the SCIFIOConfig you 
> construct, so if you delete those lines and I'm finally able to open 
> an image. The SCIFIOConfig isn't strictly necessary either - SCIFIO 
> will open it as a CellImg automatically if it needs to. I will try to 
> investigate further as to how to get the types working for a nested 
> enum in jython..
>
> You may see yet another error message about 
> io.scif.bf.BioFormatsFormat failing. This is because some jars in Fiji 
> are out of date, but that shouldn't cause catastrophic failure (it 
> just means that some proprietary formats won't be supported right 
> now). These jars should be updated this week.
>
> I hope this helps. Let me know if you can't get this working on your end.
>
> - Mark


-- 
__________________________________________________
Harri Jäälinoja
Light Microscopy Unit
Institute of Biotechnology, University of Helsinki
http://www.biocenter.helsinki.fi/bi/lmu/
+358 9 191 59370 fax +358 9 191 59366

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://imagej.net/pipermail/imagej-devel/attachments/20140226/96ace526/attachment.html>


More information about the ImageJ-devel mailing list