2014-07-23 25 views
0

我已经创建了jar文件来执行一些文件操作,我需要将它们分发给网络上的一些人。但令我惊讶的是,这个jar不能在他们的机器上运行!我被告知另一项工作是通过安装Java开发人员工具包来运行它,但如果我需要分发给多个人,这不是最好的方式。在其他机器上运行jar文件吗?

这里有什么我的选择,什么是'最佳实践'解决方案?我宁愿不安装JDK(我想我只需要JRE,但没有经过测试),我是否可以简单地将jar重写为applet,以便它可以在浏览器中运行?或者我应该弹出一个链接到最新的JRE版本并要求他们下载它?

编辑:我通过eclipse(Export> Runnable Jar)创建了jar,它产生了一个我可以运行的可运行jar。当移动到另一台机器时,windows不知道用什么打开文件。看起来我需要JRE(我们在我们的机器上安装的java只是浏览器插件,而不是我找到的JRE)。我想知道是否有办法在我的最后做更多的工作来阻止这样做最终用途会更简单一些(Launch4j已经被提出并且正在被我们采用,或者简单地手动安装)。我在java中使用了一些类,但它们是纯粹的编码,从来没有涉及到jar应该如何“分布式” 。

+0

正确版本的‘*罐子是不是可以运行在自己的机器*’你是怎么创造这个罐子?你是否设置了其中还有'public static void main(String [] args)''的主类? – Pshemo

+1

@Pshemo他说在没有jre/jdk存在的机器上运行jar – Sanjeev

+0

jar是否在你的机器上运行?什么东西在其他机器上不起作用(什么都不做,错误信息,...)?什么操作系统和JRE安装? – pascalhein

回答

4

Java程序需要JRE来运行。对于可运行的jar和小程序来说也是如此。

您可以使用jnlp为您自动下载JRE,但由于applet和webstart几乎都被弃用,所以这可能不是要走的路。

在运行程序之前,您可以告诉用户他们需要在他们的机器上安装JRE。这是非常合理的,因为大多数人都有JRE,但如果您的用户拥有较旧版本的JRE并且您正在编译更新版本,则它可能会变得复杂。

您也可以使用类似JWrapperLaunch4J的程序将JRE与您的程序捆绑在一起。这将保证你的程序可以在任何客户端机器上运行,但这意味着你必须为每个操作系统创建单独的版本,并且由于必须将JRE包含在项目中,因此下载大小将大大增加。

不幸的是,没有任何真正的最佳实践可以帮助您。根据我的经验,大多数小型项目只需要安装JRE,而大多数大型项目(如Puppy Games的游戏)将JRE捆绑在程序本身内。这真的取决于你。

+0

webstart已被弃用? –

+0

我提到applet选项,因为我们在所有机器上都安装了'java',这意味着有点含糊。我以为它只安装它的浏览器,我希望如果我推动它,我将能够使用已安装的东西。当我们'安装java'时它安装了什么?它必须是某种JRE,但我认为它仅适用于浏览器? – user3728545

+0

@KalpeshSoni Applets和webstarts现在要求您要么有付费证书,要么让用户更改其安全设置。无论哪种方式,它们都会向用户显示大量可怕的消息,目前还不清楚浏览器会支持多长时间。他们不被弃用,但现在开始使用它们是一个坏主意。 –

-1

你总是可以编写一个Web应用程序 - 每个人都有一个浏览器

,如果你想Java代码来运行你需要JDK/JRE - 你可以得到含罐子和JRE为“安装一个笨拙的方式zip文件“您的应用程序

JNLP或在webstart可以帮助客户加载JRE

相关问题