Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
自JDK1.7以来,Java Web开始崩溃_Java_Jar_Jnlp_Java 7_Java Web Start - Fatal编程技术网

自JDK1.7以来,Java Web开始崩溃

自JDK1.7以来,Java Web开始崩溃,java,jar,jnlp,java-7,java-web-start,Java,Jar,Jnlp,Java 7,Java Web Start,答案如下: 通过我们的测试,Java7WebStart似乎要求您使用SSL证书在服务器上托管资源。您的证书不必签名,但未签名的证书将向客户端提示一条信任消息,客户端可以忽略该消息。 有关更多详细信息,请参见下面的答案 我们有一个内部应用程序,我们已经使用多年了。为了使该应用程序的维护更容易,我们没有向我们的员工提供该应用程序的可安装版本,我们只是给他们一个指向.jnlp的链接,并使用JWS在他们的机器上启动它。到目前为止,这已经非常有效了,但是一旦我们的任何员工更新到Java 7,JWS系统就会

答案如下: 通过我们的测试,Java7WebStart似乎要求您使用SSL证书在服务器上托管资源。您的证书不必签名,但未签名的证书将向客户端提示一条信任消息,客户端可以忽略该消息。 有关更多详细信息,请参见下面的答案

我们有一个内部应用程序,我们已经使用多年了。为了使该应用程序的维护更容易,我们没有向我们的员工提供该应用程序的可安装版本,我们只是给他们一个指向.jnlp的链接,并使用JWS在他们的机器上启动它。到目前为止,这已经非常有效了,但是一旦我们的任何员工更新到Java 7,JWS系统就会停止在他们的计算机上工作。我们已经检查、重新检查,甚至验证了我们的JNLP模式,它很好,这让我们认为WebStart本身存在问题

当用户单击jnlp文件时,它会启动Java7初始屏幕,然后开始下载我们需要的资源。从那里,它只是挂起,JWS启动应用程序上的进度条保持在0%

有什么想法吗?这在很大程度上是因为他们升级到了Java7。同时,我们建议所有员工在接到进一步通知之前,继续使用Java 6。我们所有的代码都已正确签名

这是我们JNLP的副本:

<?xml version="1.0" encoding="utf-8"?> 
<jnlp 
  spec="1.5+" 
  codebase="http://peiportal/updater">
  <information> 
    <title>PEI Portal Application</title>
    <vendor>Petz Enterprises, Inc.</vendor>
    <offline-allowed/>
  </information>
  <security>
      <all-permissions/>
  </security>
  <resources>
    <jar href="PEIPortalLauncher.jar"/>
  </resources>
  <application-desc/>
</jnlp>

PEI门户应用程序
佩茨企业公司。

最近,当人们开始在Windows设备上安装Java 7时,我们遇到了这个问题。我们在三个不同的linux服务器上有jar文件的实例,发现我们可以从其中两个服务器下载应用程序,一个是远程服务器,一个是本地服务器,但第三个也是本地服务器

密钥位于jnlp文件中的代码库规范中。为了将jar文件成功下载到运行Java7的Windows设备上,代码库必须指定“https:…”而不是“http:…”

上面提到的远程服务器设置为安全服务器,因此专门使用https设置。这两台本地服务器都没有安全设置,但正常工作的服务器恰好在代码库规范中使用了“https:”。在另一台服务器上更改jnlp也可以使其正常工作。(我们的jnlp是模板化的,并且针对源代码管理之外的每个安装都进行了修改,因此可能存在差异。)


您可能需要删除Java控制面板中列出的任何非工作应用程序,以便与服务器上的新jnlp同步:进入Java控制面板的“常规”选项卡(可从Windows控制面板获得),按“临时Internet文件”下的“查看…”按钮,并删除所有不工作的应用程序。

虽然grw的答案绝对正确,但我通过在JNLP文件中强制使用1.6解决了这个问题:

  <resources>
-    <j2se version="1.6+" java-vm-args="-Xmx256M"/>
+    <j2se version="1.6" java-vm-args="-Xmx256M"/>

-    
+    
使用上面补丁中的第二行,不使用加号。这将迫使Java7使用Java6JRE下载这些文件,这样就可以工作了

当用户单击jnlp文件时,它会启动Java7初始屏幕,然后开始下载我们需要的资源。从那里,它只是挂起,JWS启动应用程序上的进度条保持在0%


FWIW,这也可能是由Webstart中的死锁引起的,该死锁仅在7u10中解决(到目前为止仍处于测试阶段)。看见死锁似乎出现在GUI线程(例如Java控制台)和jar下载线程之间。

对于无法访问deepc提供的kenai.com链接的任何人: 提到的bug是

我在Java bug DB中发现的另一个可能通过描述匹配的bug可能是

希望JavaWebStart能在u10上再次通过HTTP工作



更新:在我们的案例中,AVG antivirus是原因。在AVG设置中,禁用“Online Shield”和“Surf Shield”,Java 7、Windows 7和普通HTTP的组合确实有效。或升级至最新的AVG 2012版本。Cf..

在1.7更新后,我们也遇到了类似的问题,但我们能够通过转义href的.jnlp文件中的字符来解决,即分别将href值中的问号和符号改为?和&

href=“appname.jnlp?protocol=http&host=xx.xx.xx.xx&port=xx”


如果在1.7更新后删除1.6,并将spec值保持为“1.6+”,这种方法会更安全一些。

我们也遇到了这个问题,但修复方法是Apache配置文件中的ServerName和AliasName包含端口号。iedomain.com:443。当Java7比较服务器名时,它不匹配,问题就出现了。通过从名称中删除:443,一切都很好

您是否尝试过在代码库中完全限定主机名(peiportal)?这可能不是那么简单,只是一个想法。祝贺你迄今为止的良好体验。并不是每个人都对webstart记忆犹新。请从webstart窗口发布异常。您是否尝试过
spec=“6.0+”
?您应该添加一个属性
href=”http://peiportal/updater/path 到jnlp文件“
到jnlp元素。
j2se
application desc
元素也丢失。我认为1.5规范已经被弃用了。另外请注意:JavaSE7还没有为最终用户发布,只是为开发人员发布:请确保使用检查JNLP。目前,将版本字符串(在缺少的
j2se
元素中)指定为
1.6*
。有关更多详细信息,请参阅。这正是问题所在。我们一直在到处寻找这个解决方案,没有任何地方标明他们在下载Java7中的资源时将WebStart更改为需要SSL。希望其他人会看到这一点,并得到解决方案,谢谢你。我刚刚测试了这个,它似乎是可行的,但我想指出的警告,你