2013-02-05 206 views
1

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

<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 

我与日食的出口产生了 - > jar文件的工具 所以我的应用程序没有按“T开始 在Windows java的问sequrity问题,我接受它下载了一些罐子 这里是从跟踪文件的输出中

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罐子
但我仍然无法启动我的应用程序 所以我应该生成带有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> 
+0

女贞,看到我的回答,并尝试步骤1。一旦你按照JaNeLa得到JNLP文件的权利,在应用程序启动失败发布堆栈跟踪。 –

回答

1

1)您可以使用JaNeLa安德鲁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文件,并将所有libs打包在jar中”

不,这不是jnlp applets应该是de的方式ployed。

JNLP File Syntax

Deploying a Java Web Start Application

+0

+1为您的答案。请注意。点3)好吧,我也认为OS /架构特定资源元素**中的大部分Jars应该是**'nativelib'而不是'jar' - 出于同样的原因。 –

+0

通过使用Janela,我得到了我的应用程序,至少在Windows上开始至今 –

+0

通过使用Janela,我得到了我的应用程序至少在Windows上启动(明天测试Linux)。现在唯一的问题是应用程序不在屏幕的中心,并且与原来的应用程序相比,宽度略小于31像素(我同时生成了JAR,所以没有源代码差异)从jnlp开始。我现在不是如果它是一个错误或其他东西。有时我的应用程序开始在中心,有时它开始全屏。无论如何感谢尼古拉的建议,并感谢很多@Andrew这样一个伟大的工具! –