0

I'm updating our app to use Java 1.7, so on OSX I've updated to the InfiniteKind AppBundlerTask. (appbundler-1.0ea.jar)

When I run the task, the info.plist it generates doesn't have a classpath at all. (and the app doesn't run.) Also, i've been unable to find Ant Task documentation for the updated appbundlertask. So the only msg it outputs during the run is:

[bundleapp] Creating app bundle: Metrix

The Ant task looks like this:

<taskdef name="bundleapp" classname="com.oracle.appbundler.AppBundlerTask" classpath="${build-helpers-lib.dir}/appbundler-1.0ea.jar" />
<bundleapp outputdirectory="${build-finalJars.dir}"
                        jvmrequired="1.7"
                        name="Metrix"
                        displayName="Metrix"
                        identifier="Metrix"
                        shortversion="2017.1"
                        mainclassname="a.x"
                        copyright="(c)2017 EFI, Inc." >
 <classpath dir="${build-finalJars.dir}" >
 <include name="tomcat-websocket.jar" />
 <include name="batik-parser-1.8.jar" />
 <include name="flexlmmgmt.jar" />
... and a bunch more .jar files ...
 </classpath>
<option value="-Xms512m"/>
<option value="-Xmx4096m"/>
<option value="-Dapple.laf.useScreenMenuBar=true"/>
</bundleapp>

The resulting info.plist looks like this:

<?xml version="1.0" ?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>English</string>
<key>CFBundleExecutable</key>
<string>JavaAppLauncher</string>
<key>CFBundleIconFile</key>
<string>GenericApp.icns</string>
<key>CFBundleIdentifier</key>
<string>Metrix</string>
<key>CFBundleDisplayName</key>
<string>Metrix</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>Metrix</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>2017.1</string>
<key>CFBundleVersion</key>
<string>1.0</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>NSHumanReadableCopyright</key>
<string>(c)2017 EFI, Inc.</string>
<key>NSHighResolutionCapable</key>
<true/>
<key>NSSupportsAutomaticGraphicsSwitching</key>
<true/>
<key>JVMVersion</key>
<string>1.7</string>
<key>JVMMainClassName</key>
<string>a.x</string>
<key>CFBundleDocumentTypes</key>
<array>
</array>
<key>LSArchitecturePriority</key>
<array>
</array>
<key>LSEnvironment</key>
<dict>
<key>LC_CTYPE</key>
<string>UTF-8</string>
</dict>
<key>JVMOptions</key>
<array>
<string>-Xms512m</string>
<string>-Xmx4096m</string>
<string>-Dapple.laf.useScreenMenuBar=true</string>
</array>
<key>JVMDefaultOptions</key>
<dict>
</dict>
<key>JVMArguments</key>
<array>
</array>
</dict>
</plist>
CasaDelGato
  • 1,263
  • 1
  • 12
  • 29

1 Answers1

0

Doing lots more digging around and testing I've found out that:

  1. With the new Jar launcher, you (apparently) don't need a classpath in the Plist.
  2. The new launcher sets the user.dir property to the same as user.home. This causes our app to fail on startup.
  3. There is apparently no documentation on the new jarbuildertask
CasaDelGato
  • 1,263
  • 1
  • 12
  • 29