[ImageJ-devel] JavaFX packaging update

Curtis Rueden ctrueden at wisc.edu
Tue Jul 7 16:49:41 CDT 2015


Hi Wayne,

> The shell script launcher at
>
>     https://github.com/tofi86/universalJavaApplicationStub
>
> appears to work well.

Thanks for the pointer, and apologies for the delay in reply.

It is a cool project. My main concerns are:

* It is not Oracle's official deployment strategy. But we could very likely
hack the JavaFX build to overwrite the stock launcher with this one.

* It is specific to OS X. So it solves the problem of passing JVM args for
OS X only, but not for Windows or Linux. Of course, we want a solution that
works for all supported platforms.

But we'll definitely keep it in mind as we migrate ImageJ2 towards Java 8
in the next couple of months.

Regards,
Curtis

On Mon, Jun 22, 2015 at 12:51 PM, Rasband, Wayne (NIH/NIMH) [E] <
rasbandw at mail.nih.gov> wrote:

> Hi Curtis,
>
> The shell script launcher at
>
>     https://github.com/tofi86/universalJavaApplicationStub
>
> appears to work well. I was able to modify it to use a bundled JRE, pass
> JVM args and set the working directory so that ImageJ finds the plugins
> folder. There is an ImageJ distribution at
>
>     http://wsr.imagej.net/download/ImageJ-osx-java8.zip
>
> that uses it.
>
> -wayne
>
>
> > On Jun 18, 2015, at 12:17 PM, Curtis Rueden <ctrueden at WISC.EDU> wrote:
> >
> > Hi Wayne,
> >
> > > Running mvn a couple of times resolved the issue.
> >
> > Great.
> >
> > > The next two issues are how to tell ImageJ where the plugins folder is
> > > and how to set the memory limit. Is there a way to define in
> > > Info.plist a "plugins.dir” property with the value “$APPDIR", which I
> > > assume is the directory containing ImageJ.app?
> >
> > The way the JavaFX launcher works is that it picks up any JVM settings
> from the Java Preferences API at launch time. And all arguments passed on
> the CLI go straight to the main method args. So we will be updating ImageJ2
> over the summer to process args on the Java side that were previously
> handled by the launcher, including -Dfoo style system property settings
> (since in most cases it is fine to set them early in the application
> startup). Of course, not all args will be possible to support this way—e.g.
> max heap size (but see below).
> >
> > Unfortunately, the current JavaFX launcher does not yet have a means to
> dynamically pass JVM args to Java itself. I have an SO issue posted about
> it [1] as well as a bug report in to Oracle (still under review; no public
> URL yet). Maybe the JavaFX team will add a way, since this packaging
> mechanism is being actively maintained and developed. But really it is not
> that urgent, since you can run "java -Dplugins.dir=... -jar ImageJ.jar" or
> whatever from the CLI as a developer. I.e.: the native launchers maybe do
> not need those features. Regardless, we will also add shell scripts to make
> common workflows (e.g., remote debugging) as simple as possible.
> >
> > From a user standpoint, for things like max heap size, there is a nice
> UserJvmOptionsService API [2] that we will use to expose common JVM
> settings in an options dialog box. It lets you set arbitrary arguments to
> pass to java (stored via the Java Preferences API) which take effect the
> next time the application is launched.
> >
> > See also imagej/imagej-launcher#33 on GitHub [3].
> >
> > Regards,
> > Curtis
> >
> > [1] http://stackoverflow.com/q/30809330/1207769
> > [2]
> http://docs.oracle.com/javase/8/docs/technotes/guides/deploy/jvm_options_api.html
> > [3] https://github.com/imagej/imagej-launcher/issues/33
> >
> > On Thu, Jun 18, 2015 at 10:30 AM, Rasband, Wayne (NIH/NIMH) [E] <
> rasbandw at mail.nih.gov> wrote:
> > Hi Curtis,
> >
> > Running mvn a couple of times resolved the issue. The next two issues
> are how to tell ImageJ where the plugins folder is and how to set the
> memory limit. Is there a way to define in Info.plist a "plugins.dir”
> property with the value “$APPDIR", which I assume is the directory
> containing ImageJ.app?
> >
> > Best regards,
> >
> > -wayne
> >
> >
> > > On Jun 17, 2015, at 10:34 PM, Curtis Rueden <ctrueden at WISC.EDU> wrote:
> > >
> > > Hi Wayne,
> > >
> > > It looks like the Maven command failed to build the project. The
> directory listing is only the source code from Git.
> > >
> > > The error indicates something went wrong downloading artifacts for the
> Maven build system. The first time you run Maven it downloads many things,
> but they all get cached into ~/.m2/repository, so subsequent builds are
> much more reasonable. It looks like you had a connectivity-related error,
> which can probably be resolved simply by running "mvn" again, or perhaps
> "mvn -U" to force an update.
> > >
> > > If running "mvn" and/or 'mvn -U" a couple more times does not resolve
> the issue, let me know.
> > >
> > > Regards,
> > > Curtis
> > >
> > > On Wed, Jun 17, 2015 at 7:18 PM, Rasband, Wayne (NIH/NIMH) [E] <
> rasbandw at mail.nih.gov> wrote:
> > > Hi Curtis,
> > >
> > > I was able to install maven after doing "brew update”. I followed your
> instructions for building platform bundles for ImageJ 1.x, and it appeared
> to work except for this error:
> > >
> > > [ERROR] Failed to execute goal
> org.apache.maven.plugins:maven-enforcer-plugin:1.3.1:enforce
> (enforce-rules) on project ij: Execution enforce-rules of goal
> org.apache.maven.plugins:maven-enforcer-plugin:1.3.1:enforce failed: Plugin
> org.apache.maven.plugins:maven-enforcer-plugin:1.3.1 or one of its
> dependencies could not be resolved: Could not transfer artifact
> org.eclipse.aether:aether-util:jar:0.9.0.M2 from/to central (
> https://repo.maven.apache.org/maven2): Connect to
> repo.maven.apache.org:443 [repo.maven.apache.org/199.27.76.215] failed:
> Operation timed out -> [Help 1]
> > >
> > > It generated an ImageJA folder but there is no target folder in it.
> This is what the ImageJA directory looks like:
> > >
> > > ImageJA
> > >    applet.html
> > >    aREADME.txt
> > >    build.xml
> > >    pom.xml
> > >    release-notes.html
> > >    src/
> > >       main/
> > >          deploy/
> > >             package/
> > >                macosx/
> > >                   ImageJ-volume.icns
> > >                   ImageJ.icns
> > >                windows/
> > >                   ImageJ.ico
> > >          java/
> > >             ij/
> > >                CommandListener.java
> > >                CompositeImage.java
> > >                …
> > >
> > > Thanks for your help,
> > >
> > > -wayne
> > >
> > >
> > >
> > >
> > > > On Jun 17, 2015, at 3:33 PM, Curtis Rueden <ctrueden at WISC.EDU>
> wrote:
> > > >
> > > > Hi Wayne,
> > > >
> > > > It may be that the Maven download is choosing a mirror with wrong
> SHA1. Or it may be that your download is truly incomplete.
> > > >
> > > > Did you try to rm the file out of /Library/Caches/Homebrew and do it
> again?
> > > >
> > > > Did you try "brew update" first?
> > > >
> > > > http://stackoverflow.com/q/12757694/1207769
> > > > http://apple.stackexchange.com/q/57172
> > > >
> > > > Regards,
> > > > Curtis
> > > >
> > > > On Wed, Jun 17, 2015 at 1:51 PM, Rasband, Wayne (NIH/NIMH) [E] <
> rasbandw at mail.nih.gov> wrote:
> > > > Hi Curtis,
> > > >
> > > > I am still not having much luck. This is what I get when I try to
> use "brew install maven” to install maven:
> > > >
> > > > bash-3.2$ brew install maven
> > > > ==> Downloading
> http://www.apache.org/dyn/closer.cgi?path=maven/maven-3/3.2.3/binaries/apache-maven-3.2.3-bin.tar.gz
> > > > ==> Best Mirror
> http://apache.mesi.com.ar/maven/maven-3/3.2.3/binaries/apache-maven-3.2.3-bin.tar.gz
> > > >
> ########################################################################
> 100.0%
> > > > Error: SHA1 mismatch
> > > > Expected: 1ce6641f7dcb4fd5785bedcdca2979da83f6d23f
> > > > Actual: 2e7c28f3ebc08b95934336680365cfaac2697155
> > > > Archive: /Library/Caches/Homebrew/maven-3.2.3.tar.gz
> > > > To retry an incomplete download, remove the file above.
> > > >
> > > > Best regards,
> > > >
> > > > -wayne
> > > >
> > > > > On Jun 17, 2015, at 12:09 PM, Curtis Rueden <ctrueden at WISC.EDU>
> wrote:
> > > > >
> > > > > Hi Wayne,
> > > > >
> > > > > I just pushed some commits to the ImageJA repository [1] so that
> it can also build the same platform-specific application bundles -- but for
> vanilla ImageJ1 alone.
> > > > >
> > > > > To install Maven on your OS X machine, I recommend using Homebrew
> [2]. Then you can simply do:
> > > > >
> > > > >     brew install maven
> > > > >
> > > > > And you'll have a working mvn command.
> > > > >
> > > > > Note that the application bundling feature requires Java 8, since
> it is JavaFX-related functionality.
> > > > >
> > > > > So the commands you need to build platform bundles for ImageJ 1.x
> are:
> > > > >
> > > > >     git clone git://github.com/imagej/ImageJA
> > > > >     cd ImageJA
> > > > >     mvn -Pdist
> > > > >
> > > > > And it should create them in the target/jfx/native folder. There
> should be .dmg and a .pkg installers, which including a Java 8 runtime
> embedded (in the ImageJ.app/Contents/PlugIns/Java.runtime folder
> internally). There should also be an ImageJ.app in there. There is also a
> double-clickable ImageJ.jar in the target/jfx/app folder (with empty lib/
> folder since ImageJ 1.x has no dependencies), as well another set of
> installers that do _not_ include the JRE in the target/jfx/native-nojre
> folder.
> > > > >
> > > > > Happy to help troubleshoot if you continue to have problems
> getting this working.
> > > > >
> > > > > Regards,
> > > > > Curtis
> > > > >
> > > > > P.S. You may notice one exception when building the ImageJA
> bundles, relating to the version string not conforming to "x.y.z" pattern,
> but it does not halt the build.
> > > > >
> > > > > [1] https://github.com/imagej/ImageJA
> > > > > [2] http://brew.sh
> > > > >
> > > > > On Wed, Jun 17, 2015 at 9:59 AM, Rasband, Wayne (NIH/NIMH) [E] <
> rasbandw at mail.nih.gov> wrote:
> > > > >
> > > > > > On Jun 16, 2015, at 6:09 PM, Curtis Rueden <ctrueden at WISC.EDU>
> wrote:
> > > > > >
> > > > > > Hi everyone,
> > > > > >
> > > > > > For those curious about the new JavaFX packaging for ImageJ, the
> relevant bits are now merged to master. So you can play with it if you like:
> > > > > >
> > > > > >   git clone git://github.com/imagej/imagej
> > > > > >   mvn -Pdist
> > > > > >
> > > > > > And you should get some platform-specific application bundles in
> target/jfx/app and target/jfx/native directories.
> > > > > >
> > > > > > Of course, the ImageJ Updater is still ignorant of the new
> directory structure (with core ImageJ stuff in the lib/ folder instead of
> jars/). And since the native launcher is no longer the ImageJ Launcher,
> many CLI flags do not work at the moment. But we will keep working on it!
> > > > >
> > > > > Hi Curtis,
> > > > >
> > > > > Is there an OS X application bundle that includes Java 8 available
> for download? I have not had any luck getting the the ‘mvn' command to work.
> > > > >
> > > > > -wayne
> > > > >
> > > > >
> > > > >
> > > > >
> > > > >
> > > > > _______________________________________________
> > > > > ImageJ-devel mailing list
> > > > > ImageJ-devel at imagej.net
> > > > > http://imagej.net/mailman/listinfo/imagej-devel
> > > > >
> > > >
> > > >
> > >
> > >
> >
> >
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://imagej.net/pipermail/imagej-devel/attachments/20150707/ac5a2a36/attachment-0001.html>


More information about the ImageJ-devel mailing list