我正在尝试创建一个用于演示图形和算法的工具。为此,我找到了GraphStream库。我已经阅读了其所有文档和教程,但无法使这一件事起作用。我试图将图形放入我的自定义GUI(带有按钮和右侧图形空间的左侧菜单)中,我设法做到了。现在,当我启用两个按钮时:生成-使用随机生成器创建图形,以及清除-清除图形,这一切都很好,但是当我按生成时清除后,出现以下错误:


  线程“ Thread-2” org.miv.pherd.IdAlreadyInUseException中的异常:
  具有相同标识符的粒子已经存在(0)


我不明白为什么会出现这个问题,因为在我没有gui的简单测试程序中,我在main中做了简单的代码来完成同样的事情,并且可以正常工作:

public class Test {

public static void main(String[] args){

     Graph graph = new SingleGraph("test");

      graph.display();

      Generator generator = new BarabasiAlbertGenerator();
      generator.addSink(graph);
      generator.begin();
      for (int i = 0; i < 100; i++) {
      generator.nextEvents();
      }

      generator.end();

      graph.clear();
      generator = new BarabasiAlbertGenerator();
      generator.addSink(graph);
      generator.begin();
      for (int i = 0; i < 100; i++) {
      generator.nextEvents();
      }
      generator.end();


}


这段代码有效,但是当我使用按钮在GUI中执行它时,我抛出了上面提到的错误。我还检查了程序中正在运行的线程数,似乎其中有3个。我希望我的问题很清楚,有人可以帮助我。谢谢你们!

最佳答案

这是由BarabasiAlbertGenerator类中的一个已知错误引起的(请参见相应的Graphstream users thread)。

此错误已在库的1.​​3.x版本中修复,当前可以在http://graphstream-project.org/pub/1.x/nightly-build/last/的每晚构建版本中找到这些错误。

(将来,此修补程序应该是regular Graphstream downloads的一部分)

10-05 23:29