10

尽我所能,我无法让 JNLP 文件在本地运行(通过双击)。即使我指定相对于 jnlp 文件的 jar 文件,这似乎也是一个问题。我收到以下错误:

<jar>href 字段的值无效:helloworld.jar

即使 JNLP 文件与 helloworld.jar 位于同一文件夹中,也会发生这种情况。我已经进行了搜索,这是一个始终如一的问题,尤其是对于想要将应用程序打包到 CD 上并使用 JNLP 的人来说。Sun 提供的唯一“解决方案”是通过命令行指定代码库的能力,但这并没有太大帮助。我不明白他们为什么不假设或允许代码库是“。” 或“文件://”。- 我在 jnlp 标记的代码库参数(文件内部)中尝试了这些东西,但没有任何效果。


使用 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 jars?

4

5 回答 5

22

我已经使用这样的 .jnlp 文件在本地启动 Java Web Start 软件

  1. 像这样指定代码库: <jnlp spec="1.0+" codebase="file://localhost/X:/path/to/jnlp/" href="software.jnlp">

  2. 列出具有相对路径的资源:<resources> <jar href="lib/software.jar" main="true" /> <jar href="lib/softwareLibrary.jar" main="true" /> ... </resources>

  3. 最后告诉 Web Start 在哪里可以找到标有 jar 的软件入口点main="true"<application-desc main-class="com.example.Main" />

远程部署时唯一需要更改的是代码库参数。

于 2010-03-10T13:00:53.263 回答
4

只需删除属性codebase和标签hrefjnlp

<jnlp spec="1.0+">

自 java 1.6u18 起支持此功能。

于 2012-06-21T06:01:48.100 回答
2

JNLP 系统在 Java 6 更新 10(不久前)中得到了改进,但仍然很难调试(在 Java 控制台中启用完全跟踪,并单步执行 javaws 源代码。

在你的情况下,我会加倍努力让它发挥作用。也许您会提供一个完整的 JNLP 文件来显示问题?

于 2010-01-09T09:55:25.533 回答
1

为您的 jar 使用清单。在那里您可以定义要启动的主类和所需的库。请参阅清单规范中的 Main-class 和 Class-path 参数。

于 2010-01-09T06:25:03.390 回答
0

JNLP 是为网络启动(特别是 http(s))而设计的,如果没有网络,Java 实现一定会非常混乱。甚至像 eclipse 这样的成熟项目也坚持使用 .sh,.bat 选项。

于 2010-01-20T09:04:11.207 回答