Файл Runnable jar, созданный Eclipse, не будет выполнен?

Я создал очень простой исполняемый файл jar, используя Eclipse "Export → Java → Runnable Jar File". Класс HelloWorld выглядит следующим образом:

import javax.swing.JFrame;
public class HWorld extends JFrame {
  public static void main(String[] args) {
    new HWorld();
  }
  public HWorld() {
    this.setSize(200, 100);
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    this.setTitle("Hello World!");
    this.setVisible(true);
  }
}

Теперь, создав файл .jar, он отлично работает из командной строки, используя команду "java -jar HWorld.jar"

Но, когда я пытаюсь выполнить банку самостоятельно (что, предположительно, должно работать), я получаю следующую ошибку, и я не знаю, почему:

E:\Eclipse\workspace>HWorld.jar
Exception in thread "main" java.lang.NoClassDefFoundError: E:\Eclipse\workspace\HWorld/jar
Caused by: java.lang.ClassNotFoundException: E:\Eclipse\workspace\HWorld.jar
        at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
Could not find the main class: E:\Eclipse\workspace\HWorld.jar.  Program will exit.

Мой манифест выглядит следующим образом:

Manifest-Version: 1.0
Rsrc-Class-Path: ./
Class-Path: .
Rsrc-Main-Class: HWorld
Main-Class: org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader

Единственное, что мне кажется очень подозрительным, - это (поскольку .jar не является .class):

Could not find the main class: E:\Eclipse\workspace\HWorld.jar

Ищите идеи или мысли или даже ответ! Я попытался дать как можно больше информации в надежде на качественный ответ. Этот поток подразумевает, что он должен работать, но не отвечает на мой вопрос: http://forums.oracle.com/forums/thread.jspa?threadID=2152988. Может ли кто-нибудь еще попробовать его в своем Eclipse?

Ответы

Ответ 1

Ящики никогда не являются "исполняемыми" в этом смысле. Для этой банки полезно:

java -jar YOURJAR.jar

обновление обратная трассировка, которую вы поставили, причудлива. Похоже, что Windows решила пойти дальше и запустить вашу банку с некоторой версией Java, но передайте ей имя пути вместо имени класса. Я не знаю, что это за история.

Ответ 2

Удаление всех старых java-версий на моей машине исправило проблему для меня.

В конце концов я смог запустить файл .jar с командной строкой, но не с параметром двойного щелчка по умолчанию. Впоследствии последний снова работал.

Ответ 3

В моем случае, по ошибке, я не объявил класс, содержащий public static void main(), как открытый класс. После объявления класса, поскольку public смог решить эту проблему со следующим экспортом в качестве исполняемой банки через eclipse...

Надеюсь, что это поможет...