2015-10-15 48 views
1

已經在這個問題上掙扎了一段時間了。我有一個類,有一個主要的方法,當從Eclipse運行時,這個方法非常好。無論如何,當我使用maven-jar-plugin(使用maven-jar-plugin)將其運行(使用我的JNLP文件運行它)時,我無法管理它開始工作。JNLP - NoSuchMethodException

誤差即時得到如下:

java.lang.NoSuchMethodException: my.package.ishere.MainClass.main([Ljava.lang.String;) 
    at java.lang.Class.getMethod(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) 

我的主要方法是在合適的包,和主方法是公共的,靜態的,返回類型是void並具有一個字符串數組作爲參數。

爲了生成jar文件,在POM我包括以下內容:

<plugin> 
      <artifactId>maven-jar-plugin</artifactId> 
      <configuration>    
      <source>1.6</source> 
      <target>1.6</target> 
      <encoding>UTF-8</encoding> 
       <archive> 
         <manifestFile>${manifestFile}</manifestFile> 
         <manifest> 
          <addDefaultImplementationEntries>true</addDefaultImplementationEntries> 
          <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries> 
          <mainClass>my.package.ishere.Mainclass</mainClass> 
         </manifest> 
         <addMavenDescriptor>false</addMavenDescriptor> 
        </archive> 
       </configuration> 
</plugin> 

最後,在我的JNLP,我正確包括代碼庫,所有需要正確的資源,而罐子文件與main =「true」屬性。

此外,我甚至檢查了罐子上的清單文件,它清楚地說明了Main-Class:my.package.ishere.MainClass。任何人都可以給我一個關於接下來要檢查的提示嗎?我瘋了!

(顯然包名和類名不是真正的)。

在此先感謝!

編輯:MainClass代碼的要求。

package my.package.ishere; 

//HELLA long import list not going to add. 

public class MainClass extends Frame implements WindowListener { 

static String xmlParams; 

public static void main(String[] args) { 
    try { 
      xmlParams = new String(base64Decoder.decodeBuffer(args[0])); 
      MainClass mc = new MainClass(); 
      mc.setLayout(new FlowLayout()); 
      System.out.println(mc.getParameter("id")); 
      mc.init(); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
    } 
} 

這是一箇舊的小程序,我轉換成獨立的應用程序。

更新:

管理使其工作運行主jar;添加從Maven的類路徑到清單,並從命令提示符我跑java -jar name-of-the-jar.jar param1和耶,它的工作。無論如何,沒有設法從JNLP直接運行 - 仍然得到「NoSuchMethodException」。

回答

0

終於有了解決的辦法。最重要的是JNLP語法不正確,因此引發了一個「NoSuchMethodException」,因爲它沒有讀取整個參數並陷入它們之間。

因此,作爲一個解決方案,我所要做的就是完全重建我的JNLP並重新設置參數,因此它的工作。感謝所有花時間閱讀所有內容的人!