kostenloser Webspace werbefrei: lima-city


NoClassDefFoundError

lima-cityForumProgrammiersprachenJava

  1. Autor dieses Themas

    tueddel

    tueddel hat kostenlosen Webspace.

    Hallo,

    ich hab da ein kleines Problem.
    Und zwar schreibe ich momentan ein kleines Programm was auch wunderbar klappt wenn ich es in Eclipse mit dem run button ausführ.
    Sobald es allerdings Exportiere klappt es nich. Da es wahrscheinlich am SWT liegt hab ich mal ein einfaches Beispiel von eclipse.org getestet,wobei selbiger fehler auftra. Also dann jetzt hier mal die Ausgabe:

    Exception in thread "main" java.lang.NoClassDefFoundError: org/eclipse/swt/widge
    ts/Display
    at LabelDemo.main(LabelDemo.java:8)
    Caused by: java.lang.ClassNotFoundException: org.eclipse.swt.widgets.Display
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClassInternal(Unknown Source)
    ... 1 more

    Wär nett wenn mir jemand helfen könnte wieso die Programm in Eclipse laufen und was ich machen muss das sie auch exteren ausführbar sind.

    Danke
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Moin,

    Du scheinst die SWT-Bibliothek nicht dem Classpath mitzuliefern.
    In Eclipse selbst hast Du wahrscheinlich diese Bibliothek dem Build-Path hinzugefügt, richtig?

    Nach dem Exportieren ist dieser Link zu den SWT-Klassen nicht mehr gegeben.
    Deshalb musst Du beim Ausführen immer darauf achten, dass Deine SWT-Bibliothek im Classpath steckt.

    Gruß,
    Pawnee
  4. Autor dieses Themas

    tueddel

    tueddel hat kostenlosen Webspace.

    also die classpath datei ist bei mir:

    <?xml version="1.0" encoding="UTF-8"?>
    <classpath>
    <classpathentry kind="src" path="src"/>
    <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
    <classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/SWT"/>
    <classpathentry kind="output" path="bin"/>
    </classpath>

    wenn ich das richtig verstehe müsste da das SWT schon drin sein oder? Und das muss ich denn dafür noch was anders machen als den Hacken bei classpath stehen zu lassen?
  5. Moin,

    also was diese classpath-Datei ist, weiß ich nicht, auch nicht in welchem Bezug diese zum Projekt steht.

    Als was exportierst Du denn das Projekt?
    Wenn es danach als JAR-Datei vorliegt, musst Du zum Beispiel die Manifest-Datei der JAR anpassen:
    Class-Path: SWT.jar


    Gruß,
    Pawnee
  6. Autor dieses Themas

    tueddel

    tueddel hat kostenlosen Webspace.

    tach,

    ich habs jetzt glaub ich ungefähr so gemacht wie du meintest, allerdings bekomm ich jetzt immer noc nen NoClassDefFoundError nur nicht mehr mit dem SWT

    Exception in thread "main" java.lang.NoClassDefFoundError: LabelDe
    Caused by: java.lang.ClassNotFoundException: LabelDemo
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Meth
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Sour
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClassInternal(Unknown Source)
  7. Moin,

    welche Bibliotheken außer SWT.jar nutzt Du denn noch?
    Auch diese müssen in den Class-Path mit reingeschrieben werden.

    Deine Informationen, wie Du was anstellst, sind sehr spärlich.
    Wenn Du das Ganze etwas ausführlicher beschreibst, ist es einfacher, Dir zu helfen.

    Gruß,
    Pawnee
  8. Autor dieses Themas

    tueddel

    tueddel hat kostenlosen Webspace.

    Ok tut mir leid,

    also probier ich jetzt noch mal alles genau zu erklären.

    Das ist jetzt das erste mal das ich mit SWT arbeite. Wie gesagt klappt intern schon ein größeres Projekt nur mitem exporterien klappt es noch nicht, weshalb ich einfach nur ein fenster haben will. Daher hab ich auch keine anderen bibliothenk importiere.

    Vielleicht hilft dir der Quelltext:
    import org.eclipse.swt.widgets.*;
         public class LabelDemo {
              public static Display labelDisplay;
    
              public static void main(String[] args) {
                  labelDisplay = new Display();
                  LabelDemo ld = new LabelDemo();
                  ld.runDemo(labelDisplay);
              }
              public void runDemo(Display display) {
                  labelDisplay = display;
                  Shell shell = new Shell(display);
                  shell.setSize(300,300);
                  shell.setText("Label Demo");
                  shell.open();
                  while(!shell.isDisposed()){
                       if(!display.readAndDispatch())
                       display.sleep();
                  }
                  display.dispose();
              }
        }


    So das will ich dann exportieren. Dabei geh ich dann folgendermaßen vor:

    - als Typ nehm ich jar File
    - lass die hacken bei classpath und project stehen
    - dann lass ich das manifest im workspace speichern
    - geb die main klasse an
    - speicher das jar archiv aufem Desktop

    dann starte ich die Eingabeaufforderung gehe zum Desktop
    gebe java LabelDemo ein worauf

    Exception in thread 'main' java.lang.NoClassDefFoundError: LabelDe
    Caused by: java.lang.ClassNotFoundException: LabelDemo
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Meth
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Sour
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClassInternal(Unknown Source)


    erscheint.

    wenn ich dann die gespeicherte manifest datie auf den desktop ziehe
    und diese mit Class-Path: swt.jar ergänze, sodass sie dann so aussieht:

    Manifest-Version: 1.0
    Main-Class: LabelDemo
    Class-Path: swt.jar

    bleibt der effekt derselbe.

    Naja ich hoffe ich habs jetzt ein wenig besser beschrieben und schon mal danke für die bemühungen
  9. Moin,

    sehr schön, so habe ich mir das gewünscht ;)

    Also das die editierte Manifest-Datei in das Jahr rein muss, brauch ich Dir sicher nicht zu sagen, richtig?
    Das scheinst Du ja auch zu machen, zumindest verschwindet ja der Fehler zur SWT-Library.

    Nur ist jetzt irgendwie der Pfad zur Main-Class kaputt.
    Mich wundert überhaupt erstmal, wieso er in der ersten Zeile der Exception nur "LabelDe" und nicht LabelDemo anzeigt.
    Ist denn der Pfad zur Main-Class korrekt, sprich liegt in keinem Package/Unterordner?

    Was anderes fällt mir grad nicht ein, außer eventuell das Ganze mal per Hand als JAR zusammen zu bringen.

    Gruß,
    Pawnee


    Beitrag geändert: 15.11.2008 22:55:27 von pawnee
  10. Autor dieses Themas

    tueddel

    tueddel hat kostenlosen Webspace.

    ok, also ich hab jetzt den ganzen kram mal per Hand zusammengebastelt und so klappt es.

    vielen dank für deine hilfe
  11. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!