全部,
我在运行由 Netbeans 7 生成的 java web start 应用程序时遇到了一些问题。
我已将我现有的 java 6.9.1 应用程序迁移到 Netbeans 7 并尝试使其成为 Web 启动应用程序。
为此,我从项目属性中选中了启用 Web Start 选项。
对于代码库选项,我选择了 Web 应用程序部署。 选择应用程序描述符选项,它将 JNLP application-desc 元素指向我的应用程序主类。
为了签名,我生成了一个 key 并将签名属性指向它。我将混合代码设置为仅受信任,因为我的应用程序将仅使用签名的 JAR。
当我编译时,所有引用的 JAR 文件和应用程序 JAR 文件都被签名,这在控制台中输出(对于每个文件)如下:
Signing JAR: D:\MyCode\dist\lib\somejarfile.jar to D:\MyCode\dist\lib\somejarfile.jar as signFiles
Enter Passphrase for keystore: Enter key password for signFiles:
注意:signFiles 是我在 Netbeans 的签名属性中使用的别名。
在我的 dist 文件夹中创建了以下文件:
- 图书馆
- jnlpcomponent1.jnlp
- launch.html
- 启动.jnlp
- 自述文件.TXT
- 我的 App.jar
我已将这些复制到托管在 tomcat 下的我的 Web 文件夹中,该文件夹位于 C:\Program Files\Apache Software Foundation\Tomcat 7.0\webapps\mywebapp。
我在 IE 和 Firefox 中从以下 URL 运行: http://mylaptop:8080/mywebapp/launch.html
当我点击 launch.html 中的按钮启动 JNLP 文件时抛出以下异常:
com.sun.deploy.net.FailedDownloadException: Unable to load resource: file:/C:/Users/panderson/AppData/Local/Microsoft/Windows/Temporary Internet Files/Content.IE5/B3UCQV8C/$$codebase/launch.jnlp
at com.sun.deploy.net.DownloadEngine.actionDownload(Unknown Source)
at com.sun.deploy.net.DownloadEngine.getCacheEntry(Unknown Source)
at com.sun.deploy.net.DownloadEngine.getCacheEntry(Unknown Source)
at com.sun.deploy.net.DownloadEngine.getResourceCacheEntry(Unknown Source)
at com.sun.deploy.net.DownloadEngine.getResourceCacheEntry(Unknown Source)
at com.sun.deploy.net.DownloadEngine.getResource(Unknown Source)
at com.sun.deploy.net.DownloadEngine.getResource(Unknown Source)
at com.sun.javaws.Launcher.updateFinalLaunchDesc(Unknown Source)
at com.sun.javaws.Launcher.prepareToLaunch(Unknown Source)
at com.sun.javaws.Launcher.prepareToLaunch(Unknown Source)
at com.sun.javaws.Launcher.launch(Unknown Source)
at com.sun.javaws.Main.launchApp(Unknown Source)
at com.sun.javaws.Main.continueInSecureThread(Unknown Source)
at com.sun.javaws.Main$1.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
我的 launch.jnlp 文件包含以下内容:
<jnlp codebase="$$codebase" href="launch.jnlp" spec="1.0+">
...
<resources>
<j2se version="1.6+"/>
<jar href="My App.jar" main="true"/>
...
我不太清楚为什么它会在 Internet Explorer 的临时文件夹下寻找它...
...但我已尝试将 jnlp href 中的完整 url 放入 launch.JNLP 文件 http://mylaptop:8080/mywebapp/launch.jnlp然后它抛出以下异常:
com.sun.deploy.net.FailedDownloadException: Unable to load resource: file:/C:/Users/panderson/AppData/Local/Microsoft/Windows/Temporary Internet Files/Content.IE5/DR2O6URQ/$$codebase/My App.jar
如果我然后将 jar href 更改为 http://mylaptop:8080/mywebapp/My App.jar,点击launch.html中的按钮运行launch.JNLP文件时抛出如下异常。
BadFieldException[ The field <jnlp>codebase has an invalid value: $$codebase,$$codebase]
有什么帮助或想法吗?
干杯,
安德斯
最佳答案
<jnlp codebase="$$codebase" href="launch.jnlp" spec="1.0+">
这些 $$ 占位符值通常由 servlet 或类似功能转换为有意义的内容。
关于带有签名的 Java Web 启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6424308/