首先,对不起我的英语,这不是我的母语。
我的环境有:
- jre 1.5.0_12(二进制)
- jre 1.6.0_17(默认jre)
- jre 1.7.0_45(二进制)
我有两种方法可以通过Java Webstart启动应用程序:
1)\\\javaws-1.5.0_12.exe \\\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文件中,永远不要使用,而是使用
提前致谢。