无法使用“Java Web Start”启动JNLP应用程序?

31

最近,我一直能够使用Java Web Start在Firefox中启动/打开JNLP文件。

不知道发生了什么突然间,JNLP文件停止了启动,屏幕上会出现一个闪屏,显示“Java Starting...”,然后什么也没有发生。即使在浏览器中的Java控制台和javacpl.cpl小程序也不能打开。

已经尝试了所有可能性:删除了所有旧版本并安装了最新的JRE(java版本“1.6.0_17”),但仍无法工作。

为此问题做了一些谷歌搜索,人们建议使用-viewer选项启动javaws.exe,但是行为相同(出现一个闪屏,显示“Java Starting...”,然后消失)

问题是我不知道任何地方(日志等)可以查看以查看是什么导致了这个问题。

我正在使用WinXP SP3,并且下面的一些截图显示了我的系统的更多信息。如果需要,我可以提供任何其他细节,请帮助我解决这个问题。


我也看到了这个问题--真的很恼人。 - Ken
17个回答

11

我知道这是一个老问题,但在过去的一周中,我开始遇到类似的问题,所以在此留下一些关于适合我的解决方案的笔记。

这只发生在某些Windows机器上,即使使用最新的JRE(1.8.0_45)。

Java Web Start开始加载,但什么也没有发生,之前尝试的所有解决方案都没有起作用。

经过一些挖掘,我发现了这个线程,它提供了相同的设置和很好的解释。

https://community.oracle.com/thread/3676876

因此,总结一下,在x86 JRE中存在内存问题,并且由于我们的JNLP的最大堆定义为1024MB,所以我们将其更改为780MB,建议如此并已解决该问题。

但是,如果您需要超过780MB,可以尝试使用x64 JRE版本启动。


太好了,这很有效。在我们的情况下,JNPL文件中的-Xms必须等于_JAVA_OPTIONS中设置的-Xmx。 - robermann

11

看一下如果直接从命令行运行javaws.exe会发生什么。


C:\Documents and Settings\akjain>javaws - 我得到了这个http://img519.imageshack.us/img519/5225/javaws.jpg。如上所述,如果我提供“javaws somefile.jnlp”或“javaws -viewer somefile.jnlp”,则Java闪屏出现然后消失。 - akjain
1
同时删除JAVAWS_HOME变量。 - Thorbjørn Ravn Andersen
删除了JAVAWS_HOME,然后运行了“javaws -verbose Subway.jnlp”。出现了这个窗口(http://img689.imageshack.us/img689/535/javawsverbose.jpg),但是什么也没有发生。 - akjain
这是我使用的JNLP文件以及一些在Temp文件夹中经常更新的文件——> JNLP->http://sites.google.com/site/drjohnbmatthews/subway/Subway.jnlp?attredirects=0 java_install_reg.log -> http://pastebin.com/m7d1a2f2 javaws2 -> http://pastebin.com/m7d5d7740 - akjain
3
常见原因是缓存文件受损。Java控制面板可以让你清除甚至禁用缓存的使用。 - Thorbjørn Ravn Andersen

11

应启用Java Web Start。
检查是否已为您的系统启用javaws(Java Web Start),请使用下面的命令在控制台中打开Java控制面板。

javaws -viewer

Image for your refrence


这对我很有帮助,因为像控制面板中的关联文件系统修改、启用站点列表等Java安全选项都已添加,但还有一件事情需要处理! - mramsath

10

我在这里遇到了同样的问题。打开你的Java控制面板并进入设置... 取消勾选“在我的计算机上保留临时文件”。应用更改,然后再尝试运行.jnlp文件。

Java控制面板 - 在我的计算机上保留临时文件

注意:已在不同机器上测试过;Windows Server 2012、Windows Server 2008和Windows 7 64位。Java版本:1.7++,因为我的jnlp应用程序是基于1.7构建的。

请也让我知道您的反馈。:D


3
如果javacpl无法打开并显示“找不到主类”的消息,可能是因为Java在deployment.properties中的更改(可以在Win7上的C:\ Users \ \ AppData \ LocalLow \ Sun \ Java \ Deployment中找到)而混淆了。删除该文件即可解决问题。
这个bug似乎已经存在6年了,参见此处。一个应用程序应该能够忽略随着时间变化而变得过时的属性,不是吗?

3
尽管这个问题有点老,但问题是由于损坏的ClearType注册表设置引起的,并通过修复来解决,具体方法在ClearType、install4j和Java漏洞案例帖子中有描述。
ClearType、install4j和Java错误案例
你知道ClearType(Windows中的字体平滑技术)和Java(编程语言和推荐框架之一)有什么共同点吗?
除了它们在几个月内一起努力让我感到痛苦之外,没有任何共同点。我有一些Java软件无法安装。我的意思是真的不能安装——甚至找不出原因或在另一台PC上重现。
最近,我被批准使用Woopra beta(站点分析服务),它使用用Java编写的桌面客户端……但我无法安装。这让我真的很生气。 :)
故事中所有相关软件都类似:
基于install4j设置;安装崩溃并显示一堆错误。在解决问题的早期阶段,我一直责怪install4j。后来,我慢慢明白,如果它那么有缺陷那么长时间——解决方案应该已经被创建和谷歌搜索过了。
跟踪:从install4j转移注意力后,我决定推动Java框架。我之前尝试过稳定版本,所以决定选择非稳定1.6 Update 10 Release Candidate。
这实际上修复了错误消息,但并没有修复崩溃。我还注意到在设置文件目录中创建了新的错误日志。以前我只在Windows临时目录中看到过日志。
新的错误日志是这样说的:
无法显示GUI。此应用程序需要访问X Server。如果您有访问权限,则可能缺少X库。******************************************************************* 您还可以通过传递参数-c在没有访问X服务器的情况下以控制台模式运行此应用程序。在非Linux PC上寻找X-Server非常奇怪,不是吗?所以我决定尝试那个“-c”参数。并且实际上能够以控制台模式安装。
结局如何?不,现在安装的应用程序崩溃了。但这真的让我思考。如果控制台可以工作而图形界面则不能——后者必须有问题。
现在应用程序文件夹中的另一个错误日志(除其他事项外)是:
由于:java.lang.IllegalArgumentException:-60397977与特定于文本的LCD对比度密钥不兼容 成功谷歌了我Java无法读取非标准ClearType注册表设置的错误描述。
解决方案:我立即从控制面板启动了ClearType Tuner,并发现设置显示为乱码数字。将其更正为正确的数字后,所有与Java相关的问题都立即消失了。
教训:不要轻易将软件问题归咎于单个应用程序。即使是微小的和完全不相关的设置也可能引发致命的连锁反应。
链接:Java Runtime Environment http://www.java.com/en/download/index.jsp ClearType Tunerhttp://www.microsoft.com/windowsxp/downloads/powertoys/xppowertoys.mspx Wooprahttp://www.woopra.com/ install4jhttp://www.ej-technologies.com/products/install4j/overview.html

1
请添加您正在链接的页面的摘要。如果该页面消失了,您的答案就毫无意义了。 - Vidar S. Ramdal
2
当JVM没有告诉你问题所在时,这是一个很好的例子,说明问题有多难。 - Thorbjørn Ravn Andersen

3
我也遇到了同样的问题。为了解决这个问题,请按照以下步骤操作:
  1. 从cmd中运行javaws -viewer命令打开Javaws,将会出现一个新窗口。
  2. 选择您想要的jnlp文件,然后点击运行按钮。
  3. 关闭javaws查看器窗口。

1

和hpereira建议的一样,同样的解决方案可行。 问题是由于JRE版本是32位而不是64位引起的。 使用java -version检查您的Java是否是64位。

C:\>java -version
java version "1.8.0_192"
Java(TM) SE Runtime Environment (build 1.8.0_192-b12)
Java HotSpot(TM) **64-Bit Server** VM (build 25.192-b12, mixed mode)

0

这是一个你有代码的应用程序吗?Java 6u14对处理jar安全性的方式进行了更改,对我们来说导致了非常相似的问题。如果你的jar文件已经签名并且在Java 6u13或更低版本下工作正常,你可以考虑重构你的代码以解决这个更新,或者要求使用Java 6u13或更低版本。不幸的是,我不记得我们当时是如何解决这个问题的-那时都处于恐慌状态。

同样,如果你有代码,你就有可以使用的工具。你可以在启动程序中插入System.out.println语句-所有的控制台输出都会在你从命令行运行JNLP时显示在命令窗口中。否则,你可以考虑使用一个好用的日志记录器,比如log4j,以便更好地了解故障发生的位置。

你还可以考虑完全删除该应用程序并重新下载。Java Web Start有一个控制面板小程序,允许你查看应用程序下载的URL(可能是错误的URL),卸载应用程序,设置安全选项等。


@spork - 不,我没有代码,无论是从浏览器运行还是使用Java Web启动下载和运行的每个JNLP都会出现这种情况。 - akjain
那么我建议您将JRE回滚到早期版本(由于我在答案中提到的安全问题,我会选择更新13),然后查看是否可以在该点运行JWS应用程序。您还可以考虑使用Sun的Java教程页面上找到的JWS应用程序进行测试,而不是来自私人供应商的程序 - Sun的应用程序更有可能是简单且有效的。 - spork

0
在我的情况下,问题是由于从公共桌面(Windows 7)上的快捷方式启动我的应用程序引起的。据我所知,临时文件位置设置为c:\ users \ public \ etc。这导致了无法写入缓存详细信息。当我在临时文件控制面板中重置为默认值时,一切正常运行。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接