首页 文章

JNLP文件的本地替代?

提问于
浏览
9

尽我所能,我无法在本地运行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为我做的事情之一,我真的很想念 .


What is the best alternative to JNLP files, for me to use locally (i.e. double-click to run)? Is there anything so elegant or do I just need to write a shell script for Linux, a batch file for Windows, and have Ant detect and download the appropriate JOGL jars?

6 回答

  • 1

    我已经使用这样的.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参数 .

  • 0

    只需从 jnlp 标记中删除 codebasehref 属性即可 .

    <jnlp spec="1.0+">
    

    从java 1.6u18开始支持此功能 .

  • -1

    JNLP系统使用Java 6更新10进行了改进(前一段时间),但仍然很难调试(在Java控制台中启用完全跟踪,并逐步执行javaws源代码) .

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

  • 2

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

  • 20

    JNLP专为网络启动而设计(特别是http(s)),没有网络,Java实现必须真正混淆 . 即使像eclipse这样的成熟项目仍然使用.sh,.bat选项 .

  • 4

    正如dhiller建议的那样,向JAR添加清单可以让用户从没有网络访问权限的物理副本运行 . 此外,不是提供指向本地JAR的 .jnlp ,而是包含链接到您网站的 .jnlp . 这将允许用户运行最新版本的程序,并轻松安装快捷方式以供将来参考 .

相关问题