【问题标题】:jnlp cannot start the swt applicationjnlp 无法启动 swt 应用程序
【发布时间】:2013-01-20 12:53:17
【问题描述】:

我正在尝试通过 jnlp 运行应用程序我正在尝试在本地测试 jnlp 文件,然后再尝试在某些服务器上部署我的应用程序。 correrspondind 平台的所有 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 上询问 sequrity 问题,我接受它会下载一些 jars 这是跟踪文件的输出

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>

【问题讨论】:

  • Privet,查看我的回答并尝试第 1 步。根据 JaNeLa 获得正确的 jnlp 文件后,在应用程序启动失败的位置发布堆栈跟踪。

标签: java eclipse swt jnlp


【解决方案1】:

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

2)&lt;java version="1.5" /&gt;

可能需要改成

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

每个教程都有。

3)&lt;nativelib href="jl1.0.1.jar" download="eager"/&gt;

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

download="eager"为默认值,指定无意义

4) “所以我应该用 eclipse 生成可运行的 jar 文件,所有的库都打包在 jar 中”

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

JNLP File Syntax

Deploying a Java Web Start Application

【讨论】:

  • +1 为您解答。注意重新。第 3 点)很好发现,而且我也认为操作系统/架构特定资源元素中的大多数 Jars 应该 nativelib 而不是 jar - 出于同样的原因。
  • 到目前为止,通过使用 Janela,我的应用程序至少可以在 Windows 上启动
  • 到目前为止,通过使用 Janela,我的应用程序至少可以在 Windows 上启动(明天测试 linux)。唯一的问题是现在应用程序没有出现在屏幕的中心,并且与原始应用程序相比,宽度略有不同 31 像素(我同时生成了 jars,所以没有源代码差异)当从 jnlp 开始。如果它是错误或其他东西,我现在不知道。有时我的应用程序从中心开始,有时它开始全屏。无论如何,感谢 Nikolay 的建议,非常感谢@Andrew 提供了这么棒的工具!
猜你喜欢
  • 2023-03-31
  • 2010-12-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多