2017-10-19 64 views
0

我試圖將applet轉換爲常規java應用程序,使用JNLP運行。 當直接運行它的工作。但是,如果我通過JNLP運行,我會得到下面的堆棧跟蹤。JNLP無法找到使用Maven構建的主類

at com.sun.javaws.LaunchDownload.getMainClassName(Unknown Source) 
    at com.sun.javaws.Launcher.doLaunchApp(Unknown Source) 
    at com.sun.javaws.Launcher.run(Unknown Source) 
    at java.lang.Thread.run(Unknown Source) 


主要的Java類(App.java)

public static void main(String[] args) throws Exception { 
    String porta = args[0]; 
    String dados = args[1]; 
    String etiquetaBytes = args[2]; 
    DadosEtiqueta[] dadosEtiqueta = getJsonFormString(dados, DadosEtiqueta[].class); 
    ... 
} 


JNLP文件(config.jnlp) 這是罐子執行被配置

<?xml version="1.0" encoding="UTF-8"?> 
<jnlp spec="1.0+" codebase="http://172.16.3.5:8080/vendor" href="jnlp/config.jnlp"> 
    <information> 
     <title>App Title</title> 
     <vendor>Vendor Name</vendor> 
     <offline-allowed/> 
    </information> 
    <resources> 
     <j2se version="1.7+"/> 
     <jar href="dir1/dir2/dir3/app-title.jar" main="true" /> 
    </resources> 
    <application-desc/> 
</jnlp> 


Maven Jar插件(pom.xml) 這個插件設置主類。

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-jar-plugin</artifactId> 
    <configuration> 
     <archive> 
      <manifest> 
       <mainClass>myPackage.App</mainClass> 
      </manifest> 
     </archive> 
    </configuration> 
</plugin> 
+0

編譯完成後,在'/target'文件夾中,生成的清單文件的內容是什麼? – Jaime

+0

清單-版本:1.0 歸檔-版本:叢歸檔 內置者:franco.pan 創建-者:阿帕奇Maven的3.3.9 內建的jdk:1.8.0_144 主類:myPackage.App –

+0

是什麼異常(不僅是堆棧跟蹤的第一行),你得到了什麼? - 該罐子位於「http://172.16.3.5:8080/vendor/dir1/dir2/dir3/app-title.jar」中嗎? – Jaime

回答

2

我想你JNLP無效。

(見https://docs.oracle.com/javase/tutorial/deployment/deploymentInDepth/jnlpFileSyntax.html):

注意:JNLP文件必須包含下列之一:應用DESC,applet的降序,組件遞減,或安裝-遞減。

main-class應該需要application-desc

嘗試添加

<application-desc main-class="myPackage.App" /> 

有可能是一個需要添加namewidthheight太多,但描述是不是上非常準確。

+0

*「可能需要添加'name','width','height',但是描述不是很準確。」*這些只與applet-desc(對於applet)有關。 OP:請務必使用JaNeLA檢查JNLP,可在我的[共享驅動器](https://drive.google.com/drive/#folders/0B5B9wDXIGw9lUnJaUjA2cmlVRE0)上找到。 –

+0

我也讀過。但是這個例子也說明了這些參數對應用程序desc太規範不。 – asbachb

+0

我對applets有相當豐富的經驗,對他們來說,這三個參數是有意義的。例如。寬度和高度對於applet來說(或者至少是)更常見,因爲它們的大小是由嵌入它們的HTML設置的。 OTOH的桌面應用程序。大小由'pack()'(GUI中的組件所需的最小大小)或'setSize(..)'設置。'name'參數也適用於applet,因爲它是一種標識applet上下文中的幾個applet之一(可能嵌入在同一網頁中的applet)的方法。它允許進行小程序間通信等等。 –

相關問題