NoClassDefFoundError beim ausführen von jar

Ich bin immer ein "no class definition found" Ausnahme beim ausführen meiner Anwendung unter Windows (es läuft wunderbar auf OS X). Die Klassen der JVM beschwert sich über meine Klassen (Dritten keine Gläser benötigt). Wenn ich entpacken Sie die Dateien innerhalb der jar-Datei, die alle Dateien vorhanden sind, auch die, die der JVM ist beschweren.

Das Glas wird mit der folgenden Aufgabe:

<target name="jar" depends="">
<jar destfile="build/app.jar" > 
  <manifest>
    <attribute name="Built-By" value="hamza"/>
    <attribute name="Main-Class" value="com.hamza.driver.ui"/>
<attribute name="Class-Path" value="./"/>
  </manifest>
  <fileset dir="build">
    <include name="**/*.class"/>
<include name="**/*.png"/>
<include name="**/*.xpi"/>
<include name="**/*.html"/>
<exclude name="**/*.jar"/>
  </fileset>
</jar>

Ich kann nicht herausfinden, was das problem verursacht. Wenn ich entpacken Sie das jar und führen Sie das jar aus dem Verzeichnis entpackt ich das Klasse, alles funktioniert einwandfrei. Also, ich gehe davon aus, dass alle gewünschten Dateien innerhalb der jar-Datei.

EDIT: com.hamza.driver.ui ist eine Klasse in einem Paket namens com.hamza.driver die main.

Nach zu bauen, bekomme ich eine jar "app.jar" und als ich es starten mit "java -jar app.jar", die führt problemlos auf OS X, nicht jedoch unter Windows.

Wenn ich entpacken app.jar in ein separates Verzeichnis und führen Sie "java-jar app.jar" es excutes in Ordnung.

EDIT 2: Ausnahme:

Exception in thread "main" java.lang.NoClassDefFoundError: com/hamza/gui/tr 
Transfer/ClipboardTransferHandle 
bei com.hamza.- Treiber.ui.main(Unknown Source) 
Verursacht durch: java.lang.ClassNotFoundException: com.hamza.gui.transfer.Clipboa 
rdTransferHandle 
bei java.net.URLClassLoader$1.run(Unknown Source) 
bei java.Sicherheit.AccessController.doPrivileged(Native Method) 
bei java.net.URLClassLoader.findClass(Unknown Source) 
bei java.lang.ClassLoader.loadClass(Unknown Source) 
bei der sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) 
bei java.lang.ClassLoader.loadClass(Unknown Source) 
bei java.lang.ClassLoader.loadClassInternal(Quelle Unbekannt) 
... 1 mehr 

ClipboardTransferHandle .class Dateien in die jar.

EDIT 3: Importe für die clip-board class:

import java.util.die Protokollierung.Logger; 
import java.das awt.datatransfer.Zwischenablage; 
import java.das awt.datatransfer.ClipboardOwner; 
import java.das awt.datatransfer.Übertragbar; 
import java.das awt.datatransfer.StringSelection; 
import java.das awt.datatransfer.DataFlavor; 
import java.das awt.datatransfer.UnsupportedFlavorException; 
import java.das awt.Toolkit; 
import java.io.IOException; 

Beim spielen mit ihm, ich fand, dass wenn ich versuche zu erklären ClipboardTransferHandle als statische variable in der Treiber, es funktioniert, aber jedes Objekt, das nicht statisch ist, nicht gefunden.
Die wichtigsten GUI-Elemente sind statische Variablen, also die GUI aufgebaut ist, aber andere Elemente nicht; alles, was nicht statische Ursachen NoClassDefFound, aber wenn ich erkläre Sie für statische Tests, die Sie arbeiten.

Sie könnten versuchen, ohne den Class-Path-Attribut, und prüfen Sie, ob Ihr das problem reproduzieren.
Zeigen genauen Aufruf-Befehl - wie "java-jar my.jar". Wenn möglich, verlinken Sie das Glas in Frage.
Was sind die Importe in die com.hamza.gui.tr Transfer.ClipboardTransferHandle Klasse?

InformationsquelleAutor Hamza Yerlikaya | 2009-09-14

Schreibe einen Kommentar