java - jnlp无法启动swt应用程序

标签 java eclipse swt jnlp

我正在尝试通过 jnlp 运行应用程序 我正在尝试在本地测试 jnlp 文件,然后再尝试在某些服务器上部署我的应用程序。相应平台的所有 swt 库都是自签名的,并且与 jnlp 文件位于同一目录中。我的应用程序 jmf.jar 和 jl1.0.1 所需的其他 jar 也在这里。 我将它们引用为

<resources>
    <java version="1.5" />
    <jar href="MyBaran.jar"/>
    <nativelib href="jl1.0.1.jar" download="eager"/>
    <nativelib href="jmf.jar" download ="eager"/>   
</resources>

我的主应用程序 jar(MyBaran.jar) 具有以下结构

MyBaran.jar  
-com  
--game  
---Main.class  
---Game.class  
...
---Character.class
-images  
--test.jpg  
--sound.wav  
...  
--forrest.mid  
-META-INF  
--MANIFEST.MF  
--...    
-.project  
-.classpath  

我用 eclipse 导出 -> jar 文件工具生成它 所以我的应用程序无法启动 在Windows Java上询问顺序问题,我接受它下载一些 jar 这是跟踪文件的输出

CacheEntry[file:/H:/Program Files/Java/jdk1.7.0_13/bin/swt-win32-windows-x86.jar]:     updateAvailable=false,lastModified=Mon Feb 04 17:48:22 GMT+03:00 2013,length=2048373  
CacheEntry[file:/H:/Program Files/Java/jdk1.7.0_13/bin/jmf.jar]: updateAvailable=false,lastModified=Tue Feb 05 10:32:17 GMT+03:00 2013,length=1969383  
CacheEntry[file:/H:/Program Files/Java/jdk1.7.0_13/bin/MyBaran.jar]:   updateAvailable=false,lastModified=Tue Feb 05 13:59:24 GMT+03:00 2013,length=5924842  
CacheEntry[file:/H:/Program Files/Java/jdk1.7.0_13/bin/jl1.0.1.jar]:   updateAvailable=false,lastModified=Tue Feb 05 10:31:30 GMT+03:00 2013,length=112570    

所以看起来它加载了 swt jar
但我仍然无法启动我的应用程序 所以我应该使用 eclipse 生成可运行的 jar 文件,并将所有库打包在 jar 内。那么这种情况下我该如何编写jnlp文件

这是我当前的 jnlp 文件

<?xml version="1.0" encoding="utf-8"?>  
<jnlp spec="1.5" href="mybaran.jnlp">  
<information>
    <title>Garbage Collector Game</title>  
    <vendor>Java Tester</vendor>  
    <homepage href="" />  
    <description>Garbage Collector Game</description>  
    <description>Garbage Collector Game</description>   
</information>
<security>
    <all-permissions />
</security>

<resources>
    <java version="1.5" />
    <jar href="MyBaran.jar"/>
    <nativelib href="jl1.0.1.jar" download="eager"/>
    <nativelib href="jmf.jar" download ="eager"/>   
</resources>

<resources os="Windows" arch="x86">
    <jar href="swt-win32-windows-x86.jar" />
</resources>

<resources os="Windows" arch="x86_64">
    <jar href="swt-win32-windows-x86_64.jar" />
</resources>

<resources os="Windows" arch="amd64">   
    <jar href="swt-win32-windows-x86_64.jar" />
</resources>

<resources os="Linux" arch="x86_64">
    <jar href="swt-gtk-linux-x86_64.jar" />
</resources>

<resources os="Linux" arch="amd64">
    <jar href="swt-gtk-linux-x86_64.jar" />
</resources>

<resources os="Linux" arch="x86">
    <jar href="swt-gtk-linux-x86.jar" />
</resources>

<resources os="Mac" arch="x86_64">
    <jar href="swt-cocoa-mac-x86_64.jar" />
</resources>

<resources os="Mac" arch="amd64">
    <jar href="swt-cocoa-mac-x86_64.jar" />
</resources>

<resources os="Mac" arch="x86">
    <jar href="swt-cocoa-mac-x86.jar" />
</resources>

<application-desc main-class="com.game.Main"/>
</jnlp>

最佳答案

1) 您可以使用JaNeLa由 Andrew Thomphson 验证您的 jnlp 文件。

2) <java version="1.5" />

可能需要更改为

<j2se version="1.6+" href="http://java.sun.com/products/autodl/j2se"/>

它存在于每个教程中。

3) <nativelib href="jl1.0.1.jar" download="eager"/>

我不确定,但我认为nativelib用于C库,尝试将其更改为 jar

download="eager"是默认值,所以指定没有意义

4)“那么我应该使用 eclipse 生成可运行的 jar 文件,并将所有库打包在 jar 中”

不,这不是 jnlp 小程序应该部署的方式。

JNLP File Syntax

Deploying a Java Web Start Application

关于java - jnlp无法启动swt应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14710194/

相关文章:

java - <Java> 国际象棋棋子移动问题

android - 如何在使用特定版本的功能时使我的项目与不同的 sdk 版本兼容

java - 为什么调用 setMaximized 不起作用?

eclipse - 本地主机 eclipse 404 tomcat 8

java - TreeViewer 仅延迟加载图标

java - 如何在SWT中使用圆角填充矩形实现透明度?

java - 在 setOnCheckedChangeListener 方法内执行 Toast 消息

java - 重构 Java Servlets - 寻找一个好的命名方案

java - java中Object类的toString()方法是如何编译的?

android - 如何支持在 eclipse 中支持旧的 android 版本