已经有一段时间一直在努力解决这个问题 . 我有一个类,有一个main方法,从Eclipse运行时效果非常好 . 无论如何,当我使用我的JNLP文件运行它(使用maven-jar-plugin)时,我无法管理它来开始工作 .
我得到的错误如下:
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)
我的主要方法是在正确的包中,main方法是public,static,返回类型是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"属性的jar文件 .
此外,我甚至检查了jar上的清单文件,它清楚地说明了 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();
}
}
}
这是一个旧的applet,我转换成一个独立的应用程序 .
更新:
管理使其运行主 jar ;添加了从maven到清单的类路径,从命令提示符我运行 java -jar name-of-the-jar.jar param1
并且yay,它工作 . 无论如何,还没有设法从JNLP直接运行 - 仍然得到"NoSuchMethodException" .
1 回答
终于得到解决了 . 最重要的是JNLP语法不正确,因此引发了我的“NoSuchMethodException”,因为它没有读取整个参数并陷入它们之间 .
因此,作为一种解决方案,我必须做的是完全重建我的JNLP并重新设置参数,因此它起作用 . 感谢大家花了一些时间阅读所有内容!