我有一个现有的Java程序,我给一些....不是那么技术上倾向于我的客户。他们使用Linux,Windows的组合,很少有苹果机器,这就是为什么我选择Java来开发程序的原因。问题是当他们尝试启动程序时他们一直在调用我,因为他们没有已安装JRE。有没有办法:
我的目标:
//我会做类似
的事情if (JRE.exists()) // maybe use a pathname that would only show up if a JRE is installed
{
// launch program
}
else
{
// launch Java installer
}
system.exit(0);
我理解这在java中真的很难(因为你不能在没有JRE的情况下运行Java程序)但我宁愿尽可能保持这种通用性。
如果没有简单的解决方法,我只会制作一个read-me文件,其中包含指向系统上JRE的java网站链接,但用户必须完成的工作量最少越好。
答案 0 :(得分:1)
我建议你使用像IzPack这样的Java安装程序或其他免费工具。使用其中一个,您可以创建安装程序并生成本机启动程序。这可以配置为搜索Java,如果没有找到,可以帮助用户安装它。
有些开发人员也使用JSmooth或Launch4J作为原生发射器。
答案 1 :(得分:1)
检查系统上的JRE
使用Java Web Start info.页面中提到的deployJava.js
。
..旨在确保在提供指向JWS应用程序的链接之前安装适当的最低Java版本。或启动小程序。
如果是富客户端桌面应用。 (例如applet或frame),使用Java Web Start部署它。
答案 2 :(得分:1)
如果您不能使用Java Web Start,虽然我建议使用它,但您可以编写简单的脚本来检测Java。
适用于Windows (。bat):
if not "%JAVA_HOME%" == "" (
"%JAVA_HOME%\bin\javaw.exe" -jar YourApp.jar
) else (
start http://java.com/download/
)
如果定义了JAVA_HOME
环境变量,那么将使用您的应用程序jar文件启动javaw.exe
。 javaw.exe
可执行文件使用窗口子系统,因此它在没有控制台窗口的情况下运行。
如果未设置JAVA_HOME
,它将在默认浏览器中打开Java下载页面。
有关更多选项,您可以使用JScript;使用它,您可以向用户显示未安装Java的警告,然后打开浏览器进行下载。
对于Linux (。sh):
if [ "$JAVA_HOME" != "" ]; then
$JAVA_HOME/bin/java -jar YourApp.jar &
else
echo JAVA_HOME is not set: Java Runtime Environment (JRE)
echo is not installed your system.
echo Either install it from http://java.com/download/
echo or set JAVA_HOME environment variable.
fi
答案 3 :(得分:0)
为什么不直接创建批处理文件和bash文件,并要求您的客户依赖操作系统运行其中一个
答案 4 :(得分:0)
如果JRE安装在系统上,则在Windows和Linux上都设置了JAVA_HOME环境变量,它包含JRE的路径。您可以检查此变量是否已设置并相应地继续。