Dear Curtis, Thank you for your reply. It will be a couple of days before I am working on this again but thanks for the pointers.
— Michael Ellis On 18 Dec 2014, at 22:28, Curtis Rueden <ctrue...@wisc.edu> wrote: > Hi Michael, > > > The Example6c has not been updated to reflect the new way of doing > > things. > > Indeed. If you end up updating it, a pull request to that effect would be > most welcome! > > > You previously pointed me at the ImageJ OPS library. Is that th best > > way of achieving the convolution? > > The most future-proof, in that OPS is the direction we are going. However, at > this point in time it won't be the smoothest ride, since the OPS library is > still in incubation. > > Furthermore, the main OPS convolve routine leans on the ImgLib2 > FFTConvolution implementation, so if all you need is the low-level function, > then OPS is probably not necessary for you. > > > [INFO] Restricted to JDK 1.6 yet com.sun:tools:jar:1.4.2:system > > contains com/sun/codemodel/internal/ClassType.class targeted to JDK > > 1.8 > > This was a bug in the Maven build configuration, addressed earlier this week. > Should work with the latest master. > > > So what are the minimal hoops I need to jump though to setup ops such > > that the code below will compile? (I want to avoid dragging in any > > ImageJ 1 legacy code) > > > > Img<FloatType> result = image.copy(); > > Op op = ops.op("convolve", result, image, templateInverse); > > OPS does not depend on ImageJ1. (The only ImageJ2 component that does is > called imagej-legacy, and is expressly for the purpose of backwards > compatibility.) > > Easiest would be to start with the "using-ops" tutorial project, and edit the > code from there. > > https://github.com/imagej/imagej-tutorials/tree/31a5771277682e5f1ef45112094d147539dc4bc7/using-ops > > FTR, you can invoke the routine with something like: > > Object result = ops.convolve(image, templateInverse); > > However, in attempting a quick test of the convolve routine, I ran into some > obstacles with the current code. My advice at the moment is to just use > FFTConvolution directly for your needs. > > > For the record, I am suspicious about Java annotations! > > I agree with your concerns: they do unfortunately obfuscate the execution > flow. However, they also bring many advantages. In particular, the way we are > using them provides: 1) a dependency injection mechanism without the need for > any external configuration files; and 2) a very succinct syntax for > parameterized commands. We are shooting for DRY ("Don't Repeat Yourself") > code here [1], not just in the core, but particularly for plugin developers > [2]. > > I think the best way to counter the mystery surrounding the inner workings is > to thoroughly document how things work. > > Regards, > Curtis > > P.S. Related to FFTConvolution, see also these issues: > * https://github.com/imglib/imglib2-algorithm-fft/pull/1 > * https://github.com/imglib/imglib2/issues/61 > * https://github.com/imagej/imagej-ops/issues/12 > > [1] http://imagej.net/Philosophy#Convention_over_configuration > [2] Example: > http://curtis.imagej.net/2013-03-15-imagej-research-paper/plugin-comparison.png > > On Wed, Dec 10, 2014 at 1:09 PM, Michael Ellis <michael.el...@dsuk.biz> wrote: > Curtis, > > Thanks for this reply and I am now turning my attention to use of the FFT. > > It seems the FFT was moved from imglib2-algorithm to imglib2-algorithm-fft > (due I think to licensing issues). > > I need to achieve what is done in imglib2-tutorials/Example6c.java at master > · imglib/imglib2-tutorials > > The Example6c has not been updated to reflect the new way of doing things. If > I clone the imglib/imglib2-tutorials project I see the following are all > deprecated. > > import net.imglib2.algorithm.fft.FourierConvolution; > import net.imglib2.algorithm.fft.FourierTransform; > import net.imglib2.algorithm.fft.InverseFourierTransform; > > I have managed to make progress and think I have got fourier and inverse > fourier transforms working. So that just leaves the convolution. > > You previously pointed me at the ImageJ OPS library. Is that th best way of > achieving the convolution? > > The ImageJ OPS example however depends on ImageJ. The ImageJ OPS test > programs don’t help me either since the test classes do some magic wizardry > that I do not understand at all i.e. with Contexts, Java annotations and some > injection stuff. > > So what are the minimal hoops I need to jump though to setup ops such that > the code below will compile? (I want to avoid dragging in any ImageJ 1 legacy > code) > > Img<FloatType> result = image.copy(); > Op op = ops.op("convolve", result, image, templateInverse); > > Also in downloading the ImageJ-Ops project and running maven compile, I get > the following. I realise that I am at Java8 and that might be jumping the gun > a bit, but Java 6 is well past its sell by date and if you are on a new Apple > Mac, Java 6 is not a comfortable option. > > [INFO] Restricted to JDK 1.6 yet com.sun:tools:jar:1.4.2:system contains > com/sun/codemodel/internal/ClassType.class targeted to JDK 1.8 > [WARNING] Rule 1: org.apache.maven.plugins.enforcer.EnforceBytecodeVersion > failed with message: > Found Banned Dependency: com.sun:tools:jar:1.4.2 > > For the record, I am suspicious about Java annotations! *For me at least* > They fro not help with trying to understand code as I cannot make out how to > call the code in question. The feel rather like something layered on top of a > language rather than an intrinsic built in. They give me that uncomfortable > feeling that C++ Standard Template Library did - and that gave me nightmares > when it came time to debug code. > > Thanks in anticipation of any light you can throw into my darkness! > > — Michael Ellis > > > > > > > > On 5 Dec 2014, at 18:31, Curtis Rueden <ctrue...@wisc.edu> wrote: > >> Hi Michael, >> >> > It looks like there is a new FFT but the tutorials use the older >> > version. >> > >> > What should I go with? >> >> The library for doing FFT is imglib2-algorithm-fft: >> https://github.com/imglib/imglib2-algorithm-fft >> >> Regarding the "new FFT", perhaps you refer to this? >> https://github.com/imglib/imglib2-algorithm-fft/pull/1 >> >> At the moment there are licensing issues with imglib2-algorithm-fft (it >> depends on the Mines JTK library which has a license incompatible with GPL). >> That PR addresses the issues by using the JTransforms library instead. >> >> You also might want to consider using the higher level ImageJ OPS library: >> https://github.com/imagej/imagej-ops >> >> Thanks to the efforts of Brian Northan, we are about to merge an OP wrapper >> for FFT: >> https://github.com/imagej/imagej-ops/pull/76 >> >> Note that these components are still in the 0.x incubation phase, meaning >> they do not have stable APIs. That said, we would really appreciate early >> adopters who can try out the code and help drive things in the right >> direction. >> >> We will be reviewing and merging these improvements over the next few days, >> then cutting new releases of imglib2-algorithm-fft and imagej-ops. At that >> point, it should be easier for you to try them out. >> >> The relevant tutorials are based on imglib2-algorithm-fft: >> >> https://github.com/imglib/imglib2-tutorials/blob/929de9b7482c312ff9c51ab52aa632779ef058f3/src/main/java/Example6b.java >> >> https://github.com/imglib/imglib2-tutorials/blob/929de9b7482c312ff9c51ab52aa632779ef058f3/src/main/java/Example6c.java >> >> And IIUC the changes above are internal so the tutorial code should not >> requiring updating (beyond an update to the version of imglib2-algorithm-fft >> in the POM, of course). >> >> Regards, >> Curtis >> >> On Fri, Dec 5, 2014 at 12:21 PM, Michael Ellis <michael.el...@dsuk.biz> >> wrote: >> Once again, Curtis >> >> I really appreciate your help with this. >> >> Next questions on the horizon will involve the ImgLib2 algorithm FFT >> classes. It looks like there is a new FFT but the tutorials use the older >> version. >> >> What should I go with? >> >> My aim is build an application, which as part of it will be doing image >> alignment using FFT phase correlation. >> >> Regards — Michael Ellis >> >> >> On 5 Dec 2014, at 18:13, Curtis Rueden <ctrue...@wisc.edu> wrote: >> >>> Hi Michael, >>> >>> > gives me a self contained runnable jar. Progress! I’m learning. >>> > >>> > BUT as before when I run the jar, I get the Exception: No compatible >>> > service: org.scijava.service.SciJavaService >>> >>> Self contained runnable JARs (i.e., uber-jars) are convenient in some ways, >>> but come with a host of problems. >>> >>> 1) If you do not shade your dependencies (i.e., rename their packages), >>> then you may ship duplicate and/or incompatible classes with other >>> libraries. This makes your library much harder to reuse in a shared system >>> such as an ImageJ installation. >>> >>> 2) You cannot ship piecemeal updates to individual dependencies -- i.e., >>> every time your code changes, you must ship a new (possibly very large) new >>> JAR file to your users. >>> >>> 3) The SciJava annotation processor, responsible for indexing the @Plugin >>> annotations that drive SciJava/ImageJ2/etc. plugins, writes the metadata >>> into a resource file at META-INF/json/org.scijava.plugin.Plugin within the >>> JAR. If you try to create an uber-jar via the assembly or shade plugin, the >>> default combination algorithm will overwrite those files, stomping the >>> annotations. >>> >>> We wrote some code which offers one way around this: >>> >>> https://github.com/imagej/imagej/blob/imagej-2.0.0-rc-17/pom.xml#L614-L631 >>> >>> For more on uber-jars, see also: >>> >>> http://imagej.net/Frequently_Asked_Questions#How_can_I_call_ImageJ_from_my_software.3F >>> >>> The gist is: avoid using an uber-jar unless you really need it. >>> >>> > I’ve got it working with your help! >>> >>> Awesome, congratulations. Let us know if you encounter any more roadblocks. >>> >>> Regards, >>> Curtis >>> >>> On Fri, Dec 5, 2014 at 12:03 PM, Michael Ellis <michael.el...@dsuk.biz> >>> wrote: >>> Adding a build section to the POM: >>> >>> <build> >>> <plugins> >>> <plugin> >>> <groupId>org.apache.maven.plugins</groupId> >>> <artifactId>maven-shade-plugin</artifactId> >>> <version>2.3</version> >>> <executions> >>> <execution> >>> <phase>package</phase> >>> <goals> >>> <goal>shade</goal> >>> </goals> >>> <configuration> >>> <transformers> >>> <transformer >>> implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> >>> <manifestEntries> >>> <Main-Class>com.mycompany.app.App</Main-Class> >>> <Build-Number>123</Build-Number> >>> </manifestEntries> >>> </transformer> >>> </transformers> >>> </configuration> >>> </execution> >>> </executions> >>> </plugin> >>> </plugins> >>> </build> >>> >>> To the POM gives me a self contained runnable jar. Progress! I’m learning. >>> >>> BUT as before when I run the jar, I get the Exception: No compatible >>> service: org.scijava.service.SciJavaService >>> ================================================================= >>> >>> [Michaels-Retina:~/temp/deleteme/my-app] michaelellis% java -jar >>> target/my-app-1.0-SNAPSHOT.jar >>> Hello World! >>> Exception: No compatible service: org.scijava.service.SciJavaService >>> ================================================================= >>> >>> Still vexed! >>> >>> >>> On 5 Dec 2014, at 17:17, Curtis Rueden <ctrue...@wisc.edu> wrote: >>> >>>> Hi Michael, >>>> >>>> > mvn claims to build everything OK >>>> >>>> Yep, it did build successfully. >>>> >>>> > % java -cp target/my-app-1.0-SNAPSHOT.jar com.mycompany.app.App >>>> > Error: A JNI error has occurred, please check your installation and try >>>> > again >>>> > Exception in thread "main" java.lang.NoClassDefFoundError: io/scif/SCIFIO >>>> >>>> Maven is primarily a build tool. It puts the correct JARs on your >>>> classpath at compile time. In your case, that is scifio-0.17.1.jar and its >>>> dependencies. >>>> >>>> However, the way you are launching your program is not putting the >>>> required dependencies on the classpath. You put only >>>> my-app-1.0-SNAPSHOT.jar on the classpath, and its dependencies are >>>> missing. So of course Java cannot find the needed classes. >>>> >>>> The gist is: it is your responsibility to assemble the dependencies and >>>> ensure they are on the classpath somehow when you launch your application. >>>> >>>> There are several ways to accomplish this. Here is one generally useful >>>> way using Maven, which does not assume you are doing anything >>>> ImageJ-related: >>>> >>>> $ mvn dependency:copy-dependencies >>>> $ java -cp 'target/my-app-1.0-SNAPSHOT.jar:target/dependency/*' >>>> com.mycompany.app.App >>>> >>>> The "copy-dependencies" goal copies all the JAR files needed by your >>>> program into the target/dependency folder, for easy subsequent consumption. >>>> >>>> Alternately, the "ImageJ way" of dealing with deployment is to ship all >>>> needed dependencies in the "jars" folder of your ImageJ application. We >>>> created a Maven goal for this too, which you can use as follows: >>>> >>>> $ mvn -Dimagej.app.directory=/Applications/ImageJ.app >>>> -Ddelete.other.versions=true >>>> >>>> Which will copy your JAR and its dependencies into your ImageJ >>>> installation at /Applications/ImageJ.app. But note that in order for this >>>> goal to work, you must extend the pom-imagej parent (see >>>> https://github.com/imagej/minimal-ij1-plugin for an example). >>>> >>>> A third solution is to use the exec-maven-plugin to launch your >>>> application directly using Maven. E.g.: >>>> https://github.com/imagej/imagej/blob/imagej-2.0.0-rc-17/pom.xml#L255-L278 >>>> >>>> Regards, >>>> Curtis >>>> >>>> On Fri, Dec 5, 2014 at 11:03 AM, Michael Ellis <michael.el...@dsuk.biz> >>>> wrote: >>>> Curtis, >>>> >>>> Thanks but it is still not working. >>>> >>>> I have cut out using NetBeans and am now just using the CLI and a text >>>> editor. >>>> >>>> POM as follows: >>>> >>>> ======================================================== >>>> <project xmlns="http://maven.apache.org/POM/4.0.0" >>>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >>>> xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 >>>> http://maven.apache.org/xsd/maven-4.0.0.xsd"> >>>> <modelVersion>4.0.0</modelVersion> >>>> >>>> <groupId>com.mycompany.app</groupId> >>>> <artifactId>my-app</artifactId> >>>> <version>1.0-SNAPSHOT</version> >>>> <packaging>jar</packaging> >>>> >>>> <name>my-app</name> >>>> <url>http://maven.apache.org</url> >>>> >>>> <properties> >>>> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> >>>> </properties> >>>> >>>> <repositories> >>>> <repository> >>>> <id>imagej.public</id> >>>> <url>http://maven.imagej.net/content/groups/public</url> >>>> </repository> >>>> </repositories> >>>> >>>> <dependencies> >>>> <dependency> >>>> <groupId>junit</groupId> >>>> <artifactId>junit</artifactId> >>>> <version>3.8.1</version> >>>> <scope>test</scope> >>>> </dependency> >>>> >>>> <dependency> >>>> <groupId>io.scif</groupId> >>>> <artifactId>scifio</artifactId> >>>> <version>0.17.1</version> >>>> </dependency> >>>> >>>> </dependencies> >>>> </project> >>>> ======================================================== >>>> >>>> File hierarchy: >>>> >>>> . >>>> ./.DS_Store >>>> ./pom.xml >>>> ./src >>>> ./src/main >>>> ./src/main/java >>>> ./src/main/java/com >>>> ./src/main/java/com/mycompany >>>> ./src/main/java/com/mycompany/app >>>> ./src/main/java/com/mycompany/app/App.java >>>> ./src/test >>>> ./src/test/java >>>> ./src/test/java/com >>>> ./src/test/java/com/mycompany >>>> ./src/test/java/com/mycompany/app >>>> ./src/test/java/com/mycompany/app/AppTest.java >>>> ======================================================== >>>> >>>> App.java as follows: >>>> >>>> package com.mycompany.app; >>>> >>>> import io.scif.FormatException; >>>> import io.scif.ImageMetadata; >>>> import io.scif.Plane; >>>> import io.scif.Reader; >>>> import io.scif.SCIFIO; >>>> >>>> public class App >>>> { >>>> public static void main( String[] args ) >>>> { >>>> try { >>>> System.out.println( "Hello World!" ); >>>> SCIFIO scifio = new SCIFIO(); >>>> String sampleImage >>>> = >>>> "8bit-signed&pixelType=int8&lengths=50,50,3,5,7&axes=X,Y,Z,Channel,Time.fake"; >>>> final Reader reader = >>>> scifio.initializer().initializeReader(sampleImage); >>>> System.out.printf("reader=%s%n", reader ); >>>> } catch (Exception e) { >>>> System.out.printf("Exception: %s%n", e.getMessage() ); >>>> } >>>> } >>>> } >>>> >>>> ======================================================== >>>> >>>> mvm -U install >>>> >>>> [Michaels-Retina:~/temp/deleteme/my-app] michaelellis% mvn -U install >>>> [INFO] Scanning for projects... >>>> [INFO] >>>> >>>> [INFO] >>>> ------------------------------------------------------------------------ >>>> [INFO] Building my-app 1.0-SNAPSHOT >>>> [INFO] >>>> ------------------------------------------------------------------------ >>>> [INFO] >>>> [INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ >>>> my-app --- >>>> [INFO] Using 'UTF-8' encoding to copy filtered resources. >>>> [INFO] skip non existing resourceDirectory >>>> /Users/michaelellis/temp/deleteme/my-app/src/main/resources >>>> [INFO] >>>> [INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ my-app --- >>>> [INFO] Changes detected - recompiling the module! >>>> [INFO] Compiling 1 source file to >>>> /Users/michaelellis/temp/deleteme/my-app/target/classes >>>> [INFO] >>>> [INFO] --- maven-resources-plugin:2.6:testResources >>>> (default-testResources) @ my-app --- >>>> [INFO] Using 'UTF-8' encoding to copy filtered resources. >>>> [INFO] skip non existing resourceDirectory >>>> /Users/michaelellis/temp/deleteme/my-app/src/test/resources >>>> [INFO] >>>> [INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ >>>> my-app --- >>>> [INFO] Changes detected - recompiling the module! >>>> [INFO] Compiling 1 source file to >>>> /Users/michaelellis/temp/deleteme/my-app/target/test-classes >>>> [INFO] >>>> [INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ my-app --- >>>> [INFO] Surefire report directory: >>>> /Users/michaelellis/temp/deleteme/my-app/target/surefire-reports >>>> >>>> ------------------------------------------------------- >>>> T E S T S >>>> ------------------------------------------------------- >>>> Running com.mycompany.app.AppTest >>>> Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.005 sec >>>> >>>> Results : >>>> >>>> Tests run: 1, Failures: 0, Errors: 0, Skipped: 0 >>>> >>>> [INFO] >>>> [INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ my-app --- >>>> [INFO] Building jar: >>>> /Users/michaelellis/temp/deleteme/my-app/target/my-app-1.0-SNAPSHOT.jar >>>> [INFO] >>>> [INFO] --- maven-install-plugin:2.4:install (default-install) @ my-app --- >>>> [INFO] Installing >>>> /Users/michaelellis/temp/deleteme/my-app/target/my-app-1.0-SNAPSHOT.jar to >>>> /Users/michaelellis/.m2/repository/com/mycompany/app/my-app/1.0-SNAPSHOT/my-app-1.0-SNAPSHOT.jar >>>> [INFO] Installing /Users/michaelellis/temp/deleteme/my-app/pom.xml to >>>> /Users/michaelellis/.m2/repository/com/mycompany/app/my-app/1.0-SNAPSHOT/my-app-1.0-SNAPSHOT.pom >>>> [INFO] >>>> ------------------------------------------------------------------------ >>>> [INFO] BUILD SUCCESS >>>> [INFO] >>>> ------------------------------------------------------------------------ >>>> [INFO] Total time: 1.962 s >>>> [INFO] Finished at: 2014-12-05T16:59:50+00:00 >>>> [INFO] Final Memory: 18M/242M >>>> [INFO] ———————————————————————————————————— >>>> >>>> ======================================================== >>>> >>>> mvn claims to build everything OK there seems to be no inclusion of any >>>> scif libraries or class files. >>>> >>>> >>>> When I run it I get: >>>> >>>> [Michaels-Retina:~/temp/deleteme/my-app] michaelellis% java -cp >>>> target/my-app-1.0-SNAPSHOT.jar com.mycompany.app.App >>>> Error: A JNI error has occurred, please check your installation and try >>>> again >>>> Exception in thread "main" java.lang.NoClassDefFoundError: io/scif/SCIFIO >>>> at java.lang.Class.getDeclaredMethods0(Native Method) >>>> at java.lang.Class.privateGetDeclaredMethods(Class.java:2699) >>>> at java.lang.Class.privateGetMethodRecursive(Class.java:3046) >>>> at java.lang.Class.getMethod0(Class.java:3016) >>>> at java.lang.Class.getMethod(Class.java:1782) >>>> at >>>> sun.launcher.LauncherHelper.validateMainClass(LauncherHelper.java:544) >>>> at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:526) >>>> Caused by: java.lang.ClassNotFoundException: io.scif.SCIFIO >>>> at java.net.URLClassLoader.findClass(URLClassLoader.java:381) >>>> at java.lang.ClassLoader.loadClass(ClassLoader.java:424) >>>> at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) >>>> at java.lang.ClassLoader.loadClass(ClassLoader.java:357) >>>> ... 7 more >>>> >>>> >>>> ======================================================== >>>> >>>> I’ve been banging my head against this for two days now. >>>> >>>> So any help appreciated >>>> >>>> >>>> On 5 Dec 2014, at 16:35, Curtis Rueden <ctrue...@wisc.edu> wrote: >>>> >>>>> Hi Michael, >>>>> >>>>> > The POM for io.scif:scifio:jar:0.17.1 is missing, no dependency >>>>> > information available >>>>> >>>>> Make sure you have the following <repositories> block in your POM: >>>>> >>>>> <repositories> >>>>> <repository> >>>>> <id>imagej.public</id> >>>>> <url>http://maven.imagej.net/content/groups/public</url> >>>>> </repository> >>>>> </repositories> >>>>> >>>>> Then rebuild with the "-U" flag. I don't know how to do this from >>>>> NetBeans, but you only need to do it once from the CLI -- then you can >>>>> return to NetBeans and it should work. >>>>> >>>>> Regards, >>>>> Curtis >>>>> >>>>> On Fri, Dec 5, 2014 at 6:07 AM, Michael Ellis <michael.el...@dsuk.biz> >>>>> wrote: >>>>> I have followed the advice offered by Curtis regarding adding the >>>>> io.scif: scifio dependency to my POM >>>>> >>>>> The dependency part of my POM looks like this: >>>>> >>>>> <dependencies> >>>>> <dependency> >>>>> <groupId>net.imglib2</groupId> >>>>> <artifactId>imglib2</artifactId> >>>>> <version>2.2.1-SNAPSHOT</version> >>>>> <type>jar</type> >>>>> </dependency> >>>>> <dependency> >>>>> <groupId>io.scif</groupId> >>>>> <artifactId>scifio</artifactId> >>>>> <version>0.17.1</version> >>>>> <type>jar</type> >>>>> </dependency> >>>>> </dependencies> >>>>> >>>>> I am using NetBeans IDE, configured for use with maven project (I am slo >>>>> using Java 8 and JavaFX) >>>>> >>>>> However when I attempt to Build (or Build with Dependencies) within >>>>> NetBeans, I get the following error message: >>>>> ============================================================ >>>>> >>>>> cd /Users/michaelellis/Documents/Development/MavenImgLib2FX; >>>>> JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_40.jdk/Contents/Home >>>>> "/Applications/NetBeans/NetBeans >>>>> 8.0.app/Contents/Resources/NetBeans/java/maven/bin/mvn" install >>>>> Scanning for projects... >>>>> >>>>> ------------------------------------------------------------------------ >>>>> Building MavenImgLib2FX 1.0-SNAPSHOT >>>>> ------------------------------------------------------------------------ >>>>> The POM for io.scif:scifio:jar:0.17.1 is missing, no dependency >>>>> information available >>>>> ------------------------------------------------------------------------ >>>>> BUILD FAILURE >>>>> ------------------------------------------------------------------------ >>>>> Total time: 0.341s >>>>> Finished at: Fri Dec 05 10:34:41 GMT 2014 >>>>> Final Memory: 7M/245M >>>>> ------------------------------------------------------------------------ >>>>> Failed to execute goal on project MavenImgLib2FX: Could not resolve >>>>> dependencies for project biz.dsuk:MavenImgLib2FX:jar:1.0-SNAPSHOT: >>>>> Failure to find io.scif:scifio:jar:0.17.1 in >>>>> http://repo.maven.apache.org/maven2 was cached in the local repository, >>>>> resolution will not be reattempted until the update interval of central >>>>> has elapsed or updates are forced -> [Help 1] >>>>> >>>>> To see the full stack trace of the errors, re-run Maven with the -e >>>>> switch. >>>>> Re-run Maven using the -X switch to enable full debug logging. >>>>> >>>>> For more information about the errors and possible solutions, please read >>>>> the following articles: >>>>> [Help 1] >>>>> http://cwiki.apache.org/confluence/display/MAVEN/DependencyResolutionException >>>>> >>>>> ============================================================ >>>>> >>>>> If I open a terminal window and cd into the project directory and: >>>>> >>>>> mvn clean package >>>>> >>>>> It succeeds. >>>>> >>>>> However, when I then attempt to run the project with: >>>>> >>>>> java -cp MavenImgLib2FX-1.0-SNAPSHOT.jar biz.dsuk.mavenimglib2fx.MainApp >>>>> >>>>> The application starts to execute but throws “No compatible service: >>>>> io.scif.SCIFIOService” exception. >>>>> ============================================================ >>>>> >>>>> img1=CellImg [20x30] >>>>> BufferedImage=BufferedImage@3137c585: type = 10 ColorModel: #pixelBits = >>>>> 8 numComponents = 1 color space = java.awt.color.ICC_ColorSpace@134d9d5f >>>>> transparency = 1 has alpha = false isAlphaPre = false >>>>> ByteInterleavedRaster: width = 707 height = 699 #numDataElements 1 >>>>> dataOff[0] = 0 >>>>> Loading image... >>>>> Exception in Application start method >>>>> java.lang.reflect.InvocationTargetException >>>>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) >>>>> at >>>>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) >>>>> at >>>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) >>>>> at java.lang.reflect.Method.invoke(Method.java:497) >>>>> at >>>>> com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:363) >>>>> at >>>>> com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:303) >>>>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) >>>>> at >>>>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) >>>>> at >>>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) >>>>> at java.lang.reflect.Method.invoke(Method.java:497) >>>>> at sun.launcher.LauncherHelper$FXHelper.main(LauncherHelper.java:767) >>>>> Caused by: java.lang.RuntimeException: Exception in Application start >>>>> method >>>>> at >>>>> com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:875) >>>>> at >>>>> com.sun.javafx.application.LauncherImpl.lambda$launchApplication$150(LauncherImpl.java:157) >>>>> at >>>>> com.sun.javafx.application.LauncherImpl$$Lambda$50/553264065.run(Unknown >>>>> Source) >>>>> at java.lang.Thread.run(Thread.java:745) >>>>> Caused by: java.lang.IllegalArgumentException: No compatible service: >>>>> io.scif.SCIFIOService >>>>> at org.scijava.service.ServiceHelper.loadService(ServiceHelper.java:243) >>>>> at org.scijava.service.ServiceHelper.loadService(ServiceHelper.java:194) >>>>> at >>>>> org.scijava.service.ServiceHelper.loadServices(ServiceHelper.java:170) >>>>> at org.scijava.Context.<init>(Context.java:244) >>>>> at org.scijava.Context.<init>(Context.java:203) >>>>> at org.scijava.Context.<init>(Context.java:142) >>>>> at org.scijava.Context.<init>(Context.java:128) >>>>> at io.scif.SCIFIO.<init>(SCIFIO.java:81) >>>>> at biz.dsuk.mavenimglib2fx.MainApp.start(MainApp.java:38) >>>>> at >>>>> com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$156(LauncherImpl.java:821) >>>>> at >>>>> com.sun.javafx.application.LauncherImpl$$Lambda$53/681110827.run(Unknown >>>>> Source) >>>>> at >>>>> com.sun.javafx.application.PlatformImpl.lambda$runAndWait$169(PlatformImpl.java:326) >>>>> at >>>>> com.sun.javafx.application.PlatformImpl$$Lambda$47/693632176.run(Unknown >>>>> Source) >>>>> at >>>>> com.sun.javafx.application.PlatformImpl.lambda$null$167(PlatformImpl.java:295) >>>>> at >>>>> com.sun.javafx.application.PlatformImpl$$Lambda$49/1260282780.run(Unknown >>>>> Source) >>>>> at java.security.AccessController.doPrivileged(Native Method) >>>>> at >>>>> com.sun.javafx.application.PlatformImpl.lambda$runLater$168(PlatformImpl.java:294) >>>>> at >>>>> com.sun.javafx.application.PlatformImpl$$Lambda$48/1364335809.run(Unknown >>>>> Source) >>>>> at >>>>> com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95) >>>>> Exception running application biz.dsuk.mavenimglib2fx.MainApp >>>>> ============================================================ >>>>> >>>>> If I remove the calls to the SCIO code and build and run from the command >>>>> line, all works well. >>>>> >>>>> The SCIO source code that I am using is lifted/amended from one of the >>>>> tutorials and is as follows: >>>>> >>>>> ============================================================ >>>>> imagePath = >>>>> "8bit-signed&pixelType=int8&lengths=50,50,3,5,7&axes=X,Y,Z,Channel,Time.fake"; >>>>> System.out.println("Loading image... '" + imagePath + "'"); >>>>> SCIFIO scifio = new SCIFIO(); >>>>> final Reader reader = >>>>> scifio.initializer().initializeReader(imagePath); >>>>> ============================================================ >>>>> >>>>> This source code works file in the SCIFIO tutorial. >>>>> >>>>> Any help gratefully appreciated!!!!! >>>>> >>>>> — Michael Ellis >>>>> >>>>> >>>>> >>>>> >>>>> On 3 Dec 2014, at 19:31, Curtis Rueden <ctrue...@wisc.edu> wrote: >>>>> >>>>>> Hi Michael, >>>>>> >>>>>> > How do I establish what Maven projects I need to include? >>>>>> >>>>>> One way to check is using the dependency-maven-plugin like so: >>>>>> >>>>>> mvn dependency:analyze >>>>>> >>>>>> This will tell you: >>>>>> >>>>>> A) Dependencies you declared but do not actually use; and >>>>>> B) Dependencies you did not declare directly, but actually need. >>>>>> >>>>>> Note that this will only work if your project compiles successfully. In >>>>>> other words, it is easier to start with "too many" dependencies and pare >>>>>> down, rather than trying to "build up" from zero. >>>>>> >>>>>> So in your case, you can start with the ImgLib2 Examples dependencies >>>>>> block, run dependency:analyze, and adjust the POM according to its >>>>>> recommendations. >>>>>> >>>>>> > When I go to my NetBeans project dependence, select Add dependency, >>>>>> > then type SCIF to the query text box, I get a huge list of >>>>>> > possibilities. >>>>>> >>>>>> The dependency you probably want is io.scif:scifio (i.e.: a groupId of >>>>>> io.scif, and an artifactId of scifio). Presumably at the latest version. >>>>>> You can search for that here: >>>>>> >>>>>> http://maven.imagej.net/index.html#nexus-search;gav~io.scif~scifio~~~ >>>>>> >>>>>> So your dependency block in this case would be: >>>>>> >>>>>> <dependency> >>>>>> <groupId>io.scif</groupId> >>>>>> <artifactId>scifio</artifactId> >>>>>> <version>0.17.1</version> >>>>>> </dependency> >>>>>> >>>>>> Note that that block of XML is available for copy-pasting from the link >>>>>> above. >>>>>> >>>>>> > I am completely new to maven >>>>>> >>>>>> For more information, see: >>>>>> http://imagej.net/Maven >>>>>> >>>>>> Regards, >>>>>> Curtis >>>>>> >>>>>> On Tue, Dec 2, 2014 at 6:05 PM, Michael Ellis <michael.el...@dsuk.biz> >>>>>> wrote: >>>>>> I am investigating the using ImgLib2 for a project. >>>>>> >>>>>> I am using NetBeans and have managed to create a NetBeans Mavern project >>>>>> and have added a dependency for ImgLib2 Core Library and that seems to >>>>>> be working OK. >>>>>> >>>>>> I now want to add the least possible requirements for the purpose of >>>>>> opening some image files. >>>>>> >>>>>> How do I establish what Maven projects I need to include? >>>>>> >>>>>> I have cloned the ImgLib2 Examples project and got that working but >>>>>> that seems to include all manner of things that I suspect I do not need. >>>>>> >>>>>> When I go to my NetBeans project dependence, select Add dependency, then >>>>>> type SCIF to the query text box, I get a huge list of possibilities. >>>>>> >>>>>> I am completely new to maven and so do not know what I am doing with it! >>>>>> >>>>>> — Michael Ellis >>>>>> Digital Scientific UK Ltd. >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> _______________________________________________ >>>>>> ImageJ-devel mailing list >>>>>> ImageJ-devel@imagej.net >>>>>> http://imagej.net/mailman/listinfo/imagej-devel >>>>>> >>>>>> >>>>> >>>>> >>>>> _______________________________________________ >>>>> ImageJ-devel mailing list >>>>> ImageJ-devel@imagej.net >>>>> http://imagej.net/mailman/listinfo/imagej-devel >>>>> >>>>> >>>> >>>> >>>> _______________________________________________ >>>> ImageJ-devel mailing list >>>> ImageJ-devel@imagej.net >>>> http://imagej.net/mailman/listinfo/imagej-devel >>>> >>>> >>> >>> >>> _______________________________________________ >>> ImageJ-devel mailing list >>> ImageJ-devel@imagej.net >>> http://imagej.net/mailman/listinfo/imagej-devel >>> >>> >> >> > > > _______________________________________________ > ImageJ-devel mailing list > ImageJ-devel@imagej.net > http://imagej.net/mailman/listinfo/imagej-devel >
_______________________________________________ ImageJ-devel mailing list ImageJ-devel@imagej.net http://imagej.net/mailman/listinfo/imagej-devel