尽我所能,我无法在本地运行JNLP文件(通过双击)。这似乎是一个定位jar文件的问题,即使我相对于jnlp文件指定它也是如此。我收到以下错误:
字段< jar> href无效 值:helloworld.jar
即使JNLP文件与helloworld.jar位于同一文件夹中,也会发生这种情况。我已经完成了搜索,这是一个一致的问题,特别是对于想要在CD上打包应用程序并使用JNLP的人。 Sun提供的唯一“解决方案”是通过命令行指定代码库的能力,但这并没有多大帮助。我不明白为什么他们不假设或允许代码库是“。”或“file://。” - 我在jnlp标记的codebase参数中尝试了这些类型的东西(在文件中)并且没有任何效果。
使用JNLP文件非常方便,因为我不需要担心平台检测,本机库,甚至主要的JOGL jar文件;我只是包含这一行,一切都为我完成了:
<extension name="JOGL" href="http://download.java.net/media/jogl/builds/archive/jsr-231-2.0-beta10/webstart/jogl-all-awt.jnlp" />
我希望找到能做同样事情的事情。如果没有,我可以手动(或使用Ant)抓取JOGL jar文件,这不是什么大问题;这只是JNLP为我做的事情之一,我真的很想念。
JNLP文件的最佳替代方法是什么,让我在本地使用(即双击运行)?有什么优雅的东西,或者我只需要为Linux编写一个shell脚本,一个Windows的批处理文件,并让Ant检测并下载相应的JOGL jar?
答案 0 :(得分:20)
我使用这样的.jnlp文件在本地启动Java Web Start软件
像这样指定代码库:
<jnlp spec="1.0+" codebase="file://localhost/X:/path/to/jnlp/" href="software.jnlp">
列出具有相对路径的资源:<resources>
<jar href="lib/software.jar" main="true" />
<jar href="lib/softwareLibrary.jar" main="true" />
...
</resources>
最后告诉Web Start,它可以在标有main="true"
的jar中找到软件入口点:<application-desc main-class="com.example.Main" />
远程部署时唯一需要更改的是codebase参数。
答案 1 :(得分:4)
只需从codebase
代码中删除属性href
和jnlp
。
<jnlp spec="1.0+">
从java 1.6u18开始支持此功能。
答案 2 :(得分:2)
JNLP系统使用Java 6更新10进行了改进(前一段时间),但仍然很难调试(在Java控制台中启用完全跟踪,并逐步执行javaws源代码。
在你的情况下,我会加倍努力让它发挥作用。也许您会提供一个完整的JNLP文件来显示问题?
答案 3 :(得分:1)
使用jar的清单。在那里,您可以定义要启动的主类和所需的库。请参阅清单规范中的Main-class和Class-path参数。
答案 4 :(得分:0)
JNLP专为网络启动而设计(特别是http(s)),没有网络,Java实现必须真正混淆。甚至像eclipse这样的成熟项目都坚持使用.sh,.bat选项。