Uploaded image for project: 'Jalview'
  1. Jalview
  2. JAL-3310

Remove install4j classes from getdown-launcher.jar



    • Type: Task
    • Status: Closed
    • Priority: Blocker
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 2.11.0
    • Component/s: None
    • Labels:


      Currently, install4j API is being used in getdown to listen in macOS for a StartupNotification (i.e. double clicking on an associated file like a .jvp, .jvl or .fa etc). MacOS does not do the usual "open the application with the filenames appended" so this is needed.
      Licensing for install4j allows use of this API, and the install4j launcher (which launches getdown when the OS launches "Jalview") makes the install4j API available to whatever its launching presumably by ensuring its on the classpath.
      So far so good.

      However, in my drive to make the getdown-launcher.jar easily compiled and runnable from command line I've used both the install4j-runtime maven plugin (this is fine and in fact required for compilation to work) but have also used the maven-shade-plugin plugin which bundles everything together into the getdown-launcher.jar (this was used to include the apache-commons-compress.jar that will be used for untarring JVMs).

      My strict reading of the install4j license is that the install4j-runtime should only be distributed unmodified. Now clearly none of the install4j code or classes are modified, but the classes are being repackaged into the getdown-launcher.jar and this should probably be avoided.

      The lines in the license are:
      "2. License to Distribute Redistributable Files
      ej-technologies grants you a non-exclusive license to distribute all parts of install4j that are automatically included in files generated with install4j without fee ("royalty-free") provided that:

         * You distribute these files only within the unmodified files generated by install4j
         * ..."

      TODO: Use a filter in the maven-shade-plugin configuration to exclude all install4j-runtime in the packaging (it is still needed for compiling).
      Don't import com.install4j.api.launcher.StartupNotification and change the line(s) that use it to full path class call, and catch a ClassNotFoundException.




            soares Ben Soares
            soares Ben Soares
            0 Vote for this issue
            1 Start watching this issue