[ImageJ-devel] creating io.scif.img.ImgOpener currently fails in Fiji

Johannes Schindelin Johannes.Schindelin at gmx.de
Fri Aug 22 02:04:47 CDT 2014


Hi Tobias,

On Fri, 22 Aug 2014, Tobias Pietzsch wrote:

> Currently
> new io.scif.img.ImgOpener();
> fails with
> java.lang.IllegalArgumentException: Invalid service: net.imagej.legacy.LegacyAppEventService

Yep, the explanation is very easy:

> [...]
> Caused by: java.lang.UnsupportedOperationException: Cannot instantiate more than one DefaultLegacyService
> [...]

There is already a context, including a legacy service. Unfortunately, the
best way to get at this context from an *ImageJ 1.x plugin* that I could
come up with is:

	import org.scijava.Context;

	...

	final Context context = (Context)
		IJ.runPlugIn(Context.class.getName(), "");
	final ImgOpener opener = new ImgOpener(context);

(There is no way to make that more convenient without letting SCIFIO
depend on ImageJ 1.x, which is of course a big no-no).

Of course, you could also turn your plugin into an ImageJ2 plugin -- which
is handled properly in Fiji thanks to Fiji Just Being ImageJ2 -- and then
it would become as easy as:

		@Parameter
		private IOService io;

		...
			// use the IOService (which lets SCIFIO handle
			// things) to open your dataset

Ciao,
Johannes



More information about the ImageJ-devel mailing list