我正在尝试创建一个用于演示图形和算法的工具。为此,我找到了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的一部分)