已經在這個問題上掙扎了一段時間了。我有一個類,有一個主要的方法,當從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」。