Runnable файл JAR, сгенерированный Eclipse, не будет выполняться? - PullRequest
4 голосов
/ 03 февраля 2011

Я сгенерировал очень простой исполняемый файл JAR, используя функцию Eclipse «Экспорт -> 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"

Но, когда я пытаюсь выполнить 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 - это не класс.):

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

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

Ответы [ 3 ]

9 голосов
/ 03 февраля 2011

Банки никогда не являются «исполняемыми» в этом смысле.Эта банка хороша:

java -jar YOURJAR.jar

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

2 голосов
/ 23 января 2012

Удаление всех старых версий Java на моем компьютере устранило проблему для меня.

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

0 голосов
/ 29 ноября 2014

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

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

...