JNLP - NoSuchMethodException

时间:2015-10-15 11:37:14

标签: java jar manifest java-web-start jnlp

已经在这个问题上挣扎了一段时间了。我有一个类,有一个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 =&#34; true&#34; 属性的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();
        }
    }
}

这是一个旧的小程序,我转换为一个独立的应用程序。

更新:

管理使其运行主jar;将maven的类路径添加到清单中,然后从命令提示符运行java -jar name-of-the-jar.jar param1,然后就可以了。无论如何,避风港都设法直接从JNLP运行 - 仍然得到了#34; NoSuchMethodException&#34;。

1 个答案:

答案 0 :(得分:0)

终于得到解决了。最重要的是JNLP语法不正确,因此诱使我去了#No; NoSuchMethodException&#34;因为它没有阅读所有参数并陷入它们之间。

所以,作为一个解决方案,我要做的就是完全重建我的JNLP并重新设置参数,这样才有效。感谢所有花了一些时间阅读所有内容的人!