使用mac应用程序查找Java8

ee7vknir  于 2021-07-09  发布在  Java
关注(0)|答案(1)|浏览(210)

我有一个应用程序,有几千个用户下载,是用java编写的,多年来一直很稳定。它在windows和osx上运行。现在osx high sierra的新版本出现了问题。
该应用程序在Java1.6中崩溃,但在Java1.8中运行良好。
在app文件夹中有一个文件 Info.plist . 该文件最初指定了一个java JVMVersion 1.5+。这导致我的应用程序在Java1.6下运行。如果Java1.6不存在,会弹出一条消息,提示用户安装“遗留JavaSE6运行时” Info.plist 指定为1.8+,但当我尝试运行该应用程序时,会弹出一条消息,说“没有兼容的java 1.8+版本可用”。尽管我直接从oracle.com下载并安装了java 8 151版。
如何让应用程序在Java8下运行?

xxb16uws

xxb16uws1#

是的,答案是捆绑jre。让一切正常运转是一次冒险。对于其他必须经历相同或类似过程的人,我列出了这些步骤。
我的应用程序是用java编写的,我的主要开发机器是windows。要分发应用程序,我需要将必要的文件复制到我的mac并打包到那里。
下载 apache-ant-1.10.1-bin.zipant.apache.org . 把它移到 /Library/Java/Extensions .

% sudo nano /etc/paths # add /Library/Java/Extensions/apache-ant-1.10.1/bin
% nano .bash_profile # add ANT_HOME and JAVA_HOME

从下载appbundlerhttps://bitbucket.org/infinitekind/appbundler/,并将其安装到 ~/JCode/appbundler .

% cd ~/JCode/appbundler
% ant

这就产生了 ~/JCode/appbundler/bin/appbundler-1.0ea.jar . 复制到 ~/JCode/intonia/lib .
在windows上,使用eclipse和proguard创建 Intonia.jar ,并复制到 ~/JCode/intonia . 同时复制分发所需的其他库jar和文件。
在中创建build.xml ~/JCode/intonia . 以下是我的build.xml:

<project name="Intonia" default="bundle-Intonia" basedir=".">        
<!-- Import environment variables -->
<property environment="env"/>

<taskdef name="bundleapp"
     classname="com.oracle.appbundler.AppBundlerTask"   
     classpath="lib/appbundler-1.0ea.jar" />

<target name="bundle-Intonia">
    <delete dir="appBundle" failonerror="false"/>
    <mkdir dir="appBundle"/>
    <bundleapp outputdirectory="appBundle"
    name="Intonia"
    displayname="Intonia"
    identifier="com.intonia.Intonia"
    icon="Intonia.icns"
    mainclassname="com.intonia.tony.Intonia">
    <runtime dir="${env.JAVA_HOME}"/>
    <classpath file="Intonia.jar"/>
    <classpath file="jh.jar"/>
    <classpath file="jl1.0.1.jar"/>
    <classpath file="mp3spi1.9.4.jar"/>
    <classpath file="tritonus_share.jar"/>
    <classpath file="DefaultOptions.tab"/>
    <option value="-Xdock:icon=Intonia.icns"/>
    </bundleapp>
</target>
</project>

为了让事情正常运行,值得注意的调整包括 <runtime dir="${env.JAVA_HOME}"/> ,和 <option value="-Xdock:icon=Intonia.icns"/> 除了 icon="Intonia.icns" .

% cd ~/JCode/intonia
% ant

这就产生了 ~/JCode/intonia/appBundle/Intonia.app .
我的应用程序使用javahelp。javahelp要求帮助文件位于jar文件的子目录中,名为 Help . 我还没有找到让appbundler创建和填充这个目录的方法,所以我必须手动添加它。在finder中,显示包内容。选项拖动文件夹 ~/JCode/intonia/Help 进入 Contents/Java/ 目录 Intonia.app .

% codesign -s "Developer ID Application" -fv --deep appBundle/Intonia.app
% pkgbuild --root appBundle Intonia.pkg

在中创建“distribution.xml” ~/JCode/intonia . 文件如下:

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<installer-gui-script minSpecVersion="2">
<title>Intonia</title>
<options customize="never" rootVolumeOnly="true"/>
<conclusion file="Welcome.rtf" mime-type="application/rtf"/>
<license file="EULA.txt" mime-type="text/plain"/>
<allowed-os-versions>
    <os-version min="10.6.6" />
</allowed-os-versions>
<options customize="never" require-scripts="false"/>
<product id="intonia" version="1.4.0" />
<choices-outline>
    <line choice="default">
    <line choice="intonia"/>
    </line>
</choices-outline>
<choice id="default"/>
<choice id="intonia" visible="false">
    <pkg-ref id="intonia"/>
</choice>
<pkg-ref id="intonia" version="1.4.0" onConclusion="none">Intonia.pkg</pkg-ref>
</installer-gui-script>

最后,运行productbuild。它可以签署分配

% productbuild --distribution Distribution.xml --sign "Developer ID Installer" --resources . InstallIntonia1.4.0.pkg

相关问题