Уже некоторое время борется с этой проблемой. У меня есть класс с основным методом, который отлично работает при запуске Eclipse. Независимо от того, что, когда я jar его (с 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)
Мой главный метод в правильном пакете, а основной метод является открытым, статическим, возвратившись типом является ничтожным и имеет массив строк в качестве параметра ,
Для того, чтобы сгенерировать файл банка, в П I включает в себя следующее:
<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. Может ли кто-нибудь дать мне подсказку о том, что проверить дальше? Я схожу с ума!
(Очевидно, что имя пакета и имя класса не являются реальными).
Спасибо заранее!
РЕДАКТИРОВАТЬ: Код основного каталога по запросу.
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();
}
}
}
Это старый апплет, который я превратил в автономное приложение.
UPDATE:
Успели сделать его работу запуска основной банки; добавлен путь к классам из maven в манифест и из командной строки i ran java -jar name-of-the-jar.jar param1
и yay, это сработало. Независимо от того, не удалось ли запустить его прямо из JNLP, все еще получая «NoSuchMethodException».