问题描述
我可以使用Java Web Start通过带有jdk 6&的URL在命令行上启动我的Swing GUI应用程序. Windows XP:javaws http://localhost:7001/webstart/myapp/launch.jnlp
I can use Java web start to start my Swing GUI application on the command line by the url with jdk 6 & Windows XP:javaws http://localhost:7001/webstart/myapp/launch.jnlp
如何使用Java Web Start在命令行中通过文件名启动我的Swing GUI应用程序?
How to use Java web start to start my Swing GUI application on the command line by the file name?
以下方法不起作用: javaws -codebase''launch.jnlp java.net.MalformedURLException:无协议:" 在java.net.URL.(未知来源) 在java.net.URL.(未知来源) 在java.net.URL.(未知来源) 在com.sun.javaws.Main.parseArgs处(未知来源) 在com.sun.javaws.Main.continueInSecureThread(未知来源)上 在com.sun.javaws.Main $ 1.run(未知源) 在java.lang.Thread.run(未知来源)
The following ways do not work: javaws -codebase '' launch.jnlp java.net.MalformedURLException: no protocol: '' at java.net.URL.(Unknown Source) at java.net.URL.(Unknown Source) at java.net.URL.(Unknown Source) at com.sun.javaws.Main.parseArgs(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)
javaws -codebase "" launch.jnlp
java.net.MalformedURLException: unknown protocol: c
at java.net.URL.<init>(Unknown Source)
at java.net.URL.<init>(Unknown Source)
at java.net.URL.<init>(Unknown Source)
at com.sun.javaws.Main.parseArgs(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)
javaws -codebase "file:." launch.jnlp
com.sun.deploy.net.FailedDownloadException: Unable to load resource: file:./$$name
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)
javaws -codebase "file:." file://launch.jnlp
CouldNotLoadArgumentException[ Could not load file/URL specified: file://launch.jnlp]
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)
javaws file://launch.jnlp
CouldNotLoadArgumentException[ Could not load file/URL specified: file://launch.jnlp]
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)
#The following has no error message, but nothing appear on the computer screen:
javaws -codebase "" -J-Xrunjdwp:transport=dt_socket launch.jnlp
javaws -J-Xdebug -J-Xnoagent -J-Xrunjdwp:transport=dt_socket,server=n,suspend=y launch.jnlp
javaws -codebase "" -J-Xrunjdwp:transport=dt_socket,server=n,suspend=n launch.jnlp
javaws -codebase "" -J-Xrunjdwp:transport=dt_socket,server=y,suspend=n launch.jnlp
launch.jnlp文件如下:
The launch.jnlp file is as follows:
<?xml version="1.0" encoding="utf-8"?>
<jnlp spec="1.0+" codebase="$$codebase" href="$$name">
<information>
<title>${com.prod.my.myapp.common.client.title}</title>
<vendor>I</vendor>
<homepage href="http://devzone/english/dev%20template/html_templates/main.asp"/>
<description>${com.prod.my.myapp.common.client.description}</description>
<description kind="short">${com.prod.my.myapp.common.client.short_description}</description>
<icon href="$$context/images/chflag.jpg"/>
</information>
<security>
<all-permissions/>
</security>
<resources>
<java version="1.6.0_05" href="http://java.sun.com/products/autodl/j2se" max-heap-size="256m"/>
<!-- myapp Application -->
<jar href="myprod.myapp.client.jar"/>
<jar href="myprod.reports.jar"/>
<!-- TR Client jar -->
<jar href="extern.ejb-client.jar"/>
<property name="java.naming.factory.initial" value="weblogic.jndi.WLInitialContextFactory"/>
<property name="java.naming.provider.url" value="${com.prod.my.myapp.common.client.naming_provider}"/>
<property name="weblogic.jndi.enableServerAffinity" value="true" /
</resources>
<application-desc main-class="com.prod.my.myapp.common.framework.applicationmainwindow.gui.myappApplication"/
</jnlp>
推荐答案
似乎您的JNLP文件应与 JNLPDownloadServlet .根据您的应用程序当前运行的服务器,它将$$name
和$$codebase
占位符替换为当前值. (顺便说一句,您也可以使用$$server
引用当前服务器)
It seems your JNLP file should be used together with the JNLPDownloadServlet. It replaces the $$name
and $$codebase
palceholders with the current values based on the server where you application currently runs. (Btw. you can also use $$server
to refer the current server)
如果从磁盘本地运行它,则可以通过在命令行上将codebase
设置为参数-codebase
来覆盖它.正确的值是file:.
.您的问题是$$name
占位符未替换,它尝试将<jnlp ... href="$$name">
下载到file:.$$name
,并且由于不存在此类文件,因此它会失败.
If you run it locally from disk, you can overwrite the codebase
by setting it on the command line as parameter -codebase
. The right value is file:.
. You problem is that the $$name
placeholder is not replaced and it tries do download the <jnlp ... href="$$name">
which results to file:.$$name
and since no such file exists it fails.
您可以在本地运行时完全忽略<jnlp />
标记中的href="$$name"
属性,也可以手动将其更改为jnlp文件名,例如<jnlp ... href="myApp.jnlp" />
.
You can either completely omitt the href="$$name"
attribute in the <jnlp />
tag when running locally or manually change it to the jnlp file name e.g. <jnlp ... href="myApp.jnlp" />
.
也要记住,如果要使用磁盘上存储的某些本地jar,并且要通过绝对路径引用它,则应使用此格式<jar href="file:c:/myJars/myJar.jar">
(正斜杠).
Also remeber if you want to use some local jar stored on you disk and you want to refer it via absolute path you should use this format <jar href="file:c:/myJars/myJar.jar">
(forward slashes).
祝一切顺利.
这篇关于使用Java Web Start通过文件名在命令行上启动应用程序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!