# JUNG Framework - einfacher Graph



## C. Heinze (2. Jul 2007)

Hallo,

ich habe mir das JUNG Framework (1.7.6) heruntergeladen und möchte nun einen einfachen Graphen auf den Schirm bringen. Habe dazu jung-1.7.6.jar in mein Arbeitsverzeichnis entpackt.

Entsprechend befinden sich dort auch die benötigten Klassen des einfachen Beispielprogramms "SimpleGraphDraw.java":


```
import edu.uci.ics.jung.graph.Graph;
import edu.uci.ics.jung.io.PajekNetReader;
import edu.uci.ics.jung.visualization.PluggableRenderer;
import edu.uci.ics.jung.visualization.SpringLayout;
import edu.uci.ics.jung.visualization.VisualizationViewer;
```

Das Compilieren verläuft fehlerfrei, aber bei "java SimpleGraphDraw" erscheint:

Exception in thread "main" java.lang.NoClassDefFoundError: EdgeLabelDemo (wrong
name: samples/graph/EdgeLabelDemo)
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(Unknown Source)
        at java.security.SecureClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.access$000(Unknown Source)
        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)


Kann mir jemand weiterhelfen? Ziel ist es erstmal, mit JUNG einen einfachen Graphen darzustellen...

Danke

Chris


----------



## Murray (2. Jul 2007)

Das ist ein Classpath-Problem. Die Demo-Klassen liegen vermutlich nicht als Jar-File, sondern als einzelne Class-Files auf der Platte? In etwa so:
c:\temp\JUNGTest\samples\graph\EdgeLabelDemo.class

Dann muss das Verzeichnis c:\temp\JUNGTest im Classpath sein (und nicht etwa c:\temp\JUNGTest\samples\graph).


----------



## C. Heinze (2. Jul 2007)

Die CLASSPATH-Varible enthält sowohl "." als auch mein Arbeitsverzeichnis. (Sollte nicht schon der Punkt ausreichend sein?) Im Arbeitsverzeichnis selbst befindet sich dann das entpackte Archiv mit den entsprechenden Verzeichnissen

edu\uci\ics\jung\graph
edu\uci\ics\jung\io
edu\uci\ics\jung\visualization
...

wie gesagt, "javac SimpleGraphDraw,java" läuft ja, nur "java SimpleGraphDraw" muckt...


----------



## Murray (2. Jul 2007)

javac erwartet einen Dateinamen mit beliebig komplexen Pfaden. Beim Compilen entsteht dann aber das Class-File in einer Verzeichnishierarchie, die den Packagenamen nachbildet. Und laut Fehlermeldung hat EdgeLabelDemo das Package sample.graph. Daher muss genau das Verzeichnis im Classpath sein, in dem sich das Unterverzeichnis sample befindet. ES seiht aber so aus, als wäre das Verzeichnis sample/graph im Classpath.


----------



## Guest (2. Jul 2007)

Entschuldige, habe mich bei Copy und paste vertan. EdgeLabelDemo ist ein weiteres Programm, das ich getestet habe, aber zum selben Ergebnis führte.

Die Ausgabe von java SimpleGrpahDraw ist analog


Exception in thread "main" java.lang.NoClassDefFoundError: SimpleGraphDraw (wron
g name: samples/graph/SimpleGraphDraw)
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(Unknown Source)
        at java.security.SecureClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.access$000(Unknown Source)
        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)


----------



## Murray (2. Jul 2007)

Ist trotzdem der gleiche Fehler.


----------



## __Jonas__ (5. Jul 2007)

Nabend, bin gerade zufälig über diesen Thread gestolpert.
Bin mir nicht sicher ob's daran liegt, aber hast du auch die anderen benötigten Bibliotheken runtergeladen und in den Classpath aufgenommen? Auf der JUNG Download-Seite steht welche libs das sind.

/Jonas


----------



## Murray (5. Jul 2007)

Nein, die Fehlermeldung NoClassDefFoundError zusammen mit dem Hinweis "wrong name" bedeutet immer, dass im Classpath zwar ein Class-File mit dem Namen gefunden wurde, dass aber die Verzeichnishierarchie nicht zur Package- Hierarchie passt.


----------

