Java 7u45 - java webstart不会下载我的jar并执行应用程序,除非我显示java控制台

时间:2014-07-09 14:28:26

标签: java java-web-start

首先,对不起我的英语,这不是我的母语。

我的环境有:
- jre 1.5.0_12(二进制)
- jre 1.6.0_17(默认jre)
- jre 1.7.0_45(二进制)

我有两种方法可以通过Java Webstart启动应用程序:

1)\\<network filesystem>\javaws-1.5.0_12.exe \\<network filesystem>\urClient-DAP2.jnlp

2)"C:\Program Files\Java\jre1.5.0_12\bin\javaws.exe" "http://some-server.com/EU10.jnlp"

在安装Java 1.7之前,没问题。

但是由于我安装了JRE 1.7(只有二进制文件,并在注册表中注册),第二种方式不想下载JAR并执行应用程序。我只有Java启动画面 - “Java加载”出现然后在大约20秒内消失。

我找到了两个解决方法
- 禁用或卸载JRE 1.7
- 或者最奇怪的方式:我启用 java console ....(deployment.console.startup.mode=SHOW

我被卡住了,这两个变通办法都不可行......

编辑: 在javaws trace中我得到了这个例外:

`Exception in thread "javawsApplicationMain" java.lang.NullPointerException
at javax.swing.SwingUtilities.appContextGet(Unknown Source)
at javax.swing.UIManager.getLAFState(Unknown Source)
at javax.swing.UIManager.maybeInitialize(Unknown Source)
at javax.swing.UIManager.getLookAndFeel(Unknown Source)
at com.sun.deploy.util.DeployUIManager.setLookAndFeel(Unknown Source)
at com.sun.javaws.ui.DownloadWindow.buildIntroScreen(Unknown Source)
at com.sun.javaws.Launcher.downloadResources(Unknown Source)
at com.sun.javaws.Launcher.handleApplicationDesc(Unknown Source)
at com.sun.javaws.Launcher.handleLaunchFile(Unknown Source)
at com.sun.javaws.Launcher.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)`

编辑2: 我发现通过网络文件或http:

之间的区别

通过HTTP(不要下载jar):
    cache: User cache dir = C:\Documents and Settings\U01E519\Application Data\Sun\Java\Deployment\cache\javaws cache: System cache dir = C:\Program Files\Java\jre1.5.0_12\cache\javaws cache: Muffin Cache = C:\Documents and Settings\U01E519\Application Data\Sun\Java\Deployment\cache\javaws\muffins basic: Java part started basic: jnlpx.jvm: C:\Program Files\Java\jre1.7.0_45\bin\javaw.exe basic: jnlpx.splashport: 3611 basic: jnlpx.remove: false basic: jnlpx.heapsize: NULL,NULL

通过网络文件(下载jar和启动应用程序):

cache: User cache dir = C:\Documents and Settings\U01E519\Application Data\Sun\Java\Deployment\cache\javaws cache: System cache dir = C:\Program Files\Java\jre1.5.0_12\cache\javaws cache: Muffin Cache = C:\Documents and Settings\U01E519\Application Data\Sun\Java\Deployment\cache\javaws\muffins basic: Java part started basic: jnlpx.jvm: C:\Program Files\Java\jre1.5.0_12\bin\javaw.exe basic: jnlpx.splashport: 3831 basic: jnlpx.remove: true basic: jnlpx.heapsize: 64m,256m

参数jnlpx.jvm是不同的,我不知道为什么当我尝试使用http访问jnlp jvm是1.7时,我想使用1.5代替。

编辑3: 我解决了EDIT 2的问题,现在我使用bat运行java web start:

`@echo off
set JRE_HOME="C:\Program Files\Java\jre6"
echo %JRE_HOME%
set ARG=%ARG% -Xbootclasspath/a:%JRE_HOME%\lib\javaws.jar;%JRE_HOME%\lib\deploy.jar
set ARG=%ARG% -classpath %JRE_HOME%\lib\deploy.jar
set ARG=%ARG% -Djnlpx.home=%JRE_HOME%\bin
set ARG=%ARG% -Djnlpx.slashport=1322
set ARG=%ARG% -Djnlpx.jvm=%JRE_HOME%\bin\javaw.exe
set ARG=%ARG% -Djnlpx.remove=false

echo %ARG%                     

%JRE_HOME%\bin\javaw.exe %ARG% com.sun.javaws.Main "PRC_ApplicationInstruction1.6.jnlp"`

在JNLP文件中,永远不要使用<j2se version="1.6+">,而是使用<j2se version="1.6">

提前致谢。

2 个答案:

答案 0 :(得分:3)

== 第1步

您的问题仅来自java 7u45安全性。首先,尝试将此属性添加到您的罐子中:

Permissions: all-permissions
Codebase: *
Trusted-Library: true

这可能就足够了,并且会清除安全警告。

== 第2步

如果还不够:7u45不会将非安全属性传输到您的应用程序,除非JNLP已签名(即:Eclipse RCP中的osgi bundle-list)。所以尝试签署你的JNLP。

== 第3步

如果您无法签署JNLP ^^您可以通过在名称的开头添加“jnlp”将您的非安全属性转换为安全属性

关于该漏洞的Oracle文档: http://docs.oracle.com/javase/tutorial/deployment/doingMoreWithRIA/settingArgsProperties.html

答案 1 :(得分:1)

最后,我以这种方式解决了所有问题:

我使用bat运行java web start:

`@echo off
set JRE_HOME="C:\Program Files\Java\jre6"
echo %JRE_HOME%
set ARG=%ARG% -Xbootclasspath/a:%JRE_HOME%\lib\javaws.jar;%JRE_HOME%\lib\deploy.jar
set ARG=%ARG% -classpath %JRE_HOME%\lib\deploy.jar
set ARG=%ARG% -Djnlpx.home=%JRE_HOME%\bin 
set ARG=%ARG% -Djnlpx.slashport=1322
set ARG=%ARG% -Djnlpx.jvm=%JRE_HOME%\bin\javaw.exe
set ARG=%ARG% -Djnlpx.remove=false
echo %ARG%                     
%JRE_HOME%\bin\javaw.exe %ARG% com.sun.javaws.Main "PRC_ApplicationInstruction1.6.jnlp"`

在JNLP文件中,永远不要使用<j2se version="1.6+">,而是使用<j2se version="1.6">