繁体   English   中英

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

[英]Java 7u45 - java webstart doesn't download my jar and execute application unless i show java console

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

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

我有2种方法通过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(仅二进制文件,并在regedit中注册),所以第二种方法不希望下载JAR并执行应用程序。 我只有Java启动画面-出现“ Java loading”,然后在大约20秒后消失。

我发现了两种解决方法
-禁用或卸载JRE 1.7
-或最怪异的方式:我启用Java控制台 ....( deployment.console.startup.mode=SHOW

我被困住了,这两种解决方法都不可行...

编辑:在javaws跟踪中,我得到了这个异常:

`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:我现在用蝙蝠运行java web start来解决编辑2的问题:

`@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">

提前致谢。

== 步骤1

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

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

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

== 步骤2

如果还不够:除非对JNLP进行了签名(即:Eclipse RCP中的osgi bundle-list),否则7u45不会将非安全属性传输到您的应用程序。 因此,请尝试签署您的JNLP。

== 步骤3

如果您不能对JNLP签名^^您可以通过在名称的开头添加“ jnlp”到所有属性,将非安全属性转换为安全属性

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

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

我用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">

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM