Исключение для мультиграфа в графическом потоке

Я работаю над тем, чтобы показать два ребра на двух узлах, если ребер больше одного. Я следую этому примеру. Но я столкнулся с исключением:

Исключение в потоке «main» java.lang.NoClassDefFoundError: scala / collection / convert / WrapAsScala в java.lang.Class.forName0 (собственный метод) в java.lang.Class.forName (Class.java:264) в org.graphstream .ui.view.Viewer.newGraphRenderer (Viewer.java:349) на org.graphstream.graph.implementations.AbstractGraph.display (AbstractGraph.java:753) на org.graphstream.graph.implementations.AbstractGraph.display (AbstractGraph.java : 747) в com.h2Database.app.ahd.main (ahd.java:18) Вызвано: java.lang.ClassNotFoundException: scala.collection.convert.WrapAsScala в java.net.URLClassLoader.findClass (URLClassLoader.java:381 ) в java.lang.ClassLoader.loadClass (ClassLoader.java:424) в sun.misc.Launcher $ AppClassLoader.loadClass (Launcher.java:331) в java.lang.ClassLoader.loadClass (ClassLoader.java:357) .. . Еще 6

мой код:

import org.graphstream.graph.*;
import org.graphstream.graph.implementations.*;
import org.graphstream.ui.view.Viewer;

public class ahd {
    public static void main(String args[]) {
        Graph graph = new MultiGraph("Test");
        System.setProperty("org.graphstream.ui.renderer", "org.graphstream.ui.j2dviewer.J2DGraphRenderer");
        graph.addNode("A");
        graph.addNode("B");

        graph.addEdge("1", "A", "B", true);
        graph.addEdge("2", "A", "B", true);

        Viewer viewer = graph.display();
    }
}

Есть идеи, почему я столкнулся с этим? Похоже, что в данном примере эта проблема решена.


person Noob Player    schedule 19.07.2017    source источник
comment
Укажите, какую версию gs-core и gs-ui вы используете.   -  person Yoann    schedule 19.07.2017
comment
@Yoann 1.3, последняя версия   -  person Noob Player    schedule 20.07.2017


Ответы (2)


GraphStream v1.3 состоит из трех jar файлов:

$ ls -1 lib/*1.3.jar
lib/gs-algo-1.3.jar
lib/gs-core-1.3.jar
lib/gs-ui-1.3.jar

J2DGraphRenderer и его внутренние классы можно найти в gs-ui-1.3.jar:

$ jar tf lib/gs-ui-1.3.jar | grep org.graphstream.ui.j2dviewer.J2DGraphRenderer
org/graphstream/ui/j2dviewer/J2DGraphRenderer$$anonfun$render$2.class
org/graphstream/ui/j2dviewer/J2DGraphRenderer.class
org/graphstream/ui/j2dviewer/J2DGraphRenderer$.class
org/graphstream/ui/j2dviewer/J2DGraphRenderer$$anonfun$render$2$$anonfun$apply$1.class
org/graphstream/ui/j2dviewer/J2DGraphRenderer$$anonfun$removeRenderers$1.class
org/graphstream/ui/j2dviewer/J2DGraphRenderer$$anonfun$render$1.class
org/graphstream/ui/j2dviewer/J2DGraphRenderer$$anonfun$removeRenderers$3.class
org/graphstream/ui/j2dviewer/J2DGraphRenderer$$anonfun$removeRenderers$2.class

Убедитесь, что gs-ui-1.3.jar находится в пути к классам во время выполнения:

$ javac -cp .:lib/* ahd.java 
$ java -cp .:lib/* ahd

image

Обратите внимание, что синтаксис пути к классам зависит от ОС.

person trashgod    schedule 23.07.2017

Я тоже столкнулся с этой проблемой. Что исправило для меня, так это обновление с 1.3 до 2.0. Обратите внимание, что пакет ui был переименован в gs-ui-swing (или -javafx, или -android).

person Thomas N    schedule 05.07.2021