2013-02-05 249 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這樣一個偉大的工具! –