JUNG VisualizationImageServer 初始化时出现 ArrayStoreException
ArrayStoreException on JUNG VisualizationImageServer initialization
我正在尝试获得一个基本的 JUNG 图示例 运行ning - 我能够在独立的 java 程序中获得以下代码 运行 但是当我把使用 Maven 构建的服务器端 jar 中的相同代码,它在 VisualizationImageServer 初始化时失败并出现 ArrayStoreException:
public Response getGraph() throws IOException {
//log.info("Starting graph rendering");
try {
DirectedSparseGraph<String, Number> g = new DirectedSparseGraph();
String[] v = createVertices(10);
createEdges(v);
vv = new VisualizationImageServer<String,Number>(new KKLayout<String,Number>(graph), new Dimension(600,600));
renderGraph(vv);
...}
此行失败:
vv = new VisualizationImageServer<String,Number>(new KKLayout<String,Number>(graph), new Dimension(600,600));
错误消息片段:
java.lang.ArrayStoreException: edu.uci.ics.jung.algorithms.layout.KKLayout
at edu.uci.ics.jung.visualization.layout.ObservableCachingLayout.<init>(ObservableCachingLayout.java:50)
at edu.uci.ics.jung.visualization.DefaultVisualizationModel.setGraphLayout(DefaultVisualizationModel.java:91)
at edu.uci.ics.jung.visualization.DefaultVisualizationModel.<init>(DefaultVisualizationModel.java:74)
at edu.uci.ics.jung.visualization.BasicVisualizationServer.<init>(BasicVisualizationServer.java:150)
at edu.uci.ics.jung.visualization.VisualizationImageServer.<init>(VisualizationImageServer.java:40)
我最好的猜测是,在您的服务器端代码中,您有多个相互冲突的 jung 版本。
在 jung-visualization 2.0 版 ObservableCachingLayout
的第 50 行,委托 (KKLayout
) 被添加到 org.apache.commons.collections15.Transformer[]
数组,因为 KKLayout
委托是(应该是)Transformer
的一个实例。
你的数组存储异常调用 KKLayout
作为问题让我认为 ObservableCachingLayout
的早期版本 2.0 正在获得 2.1 或更高版本的 KKLayout
委托(来自 jung-algorithms ) 不是 Transformer
,而是 com.google.common.base.Function
。
我无法验证这是否是实际问题,但我相信这个理论解决了您所看到的特定错误的可能原因。
我正在尝试获得一个基本的 JUNG 图示例 运行ning - 我能够在独立的 java 程序中获得以下代码 运行 但是当我把使用 Maven 构建的服务器端 jar 中的相同代码,它在 VisualizationImageServer 初始化时失败并出现 ArrayStoreException:
public Response getGraph() throws IOException {
//log.info("Starting graph rendering");
try {
DirectedSparseGraph<String, Number> g = new DirectedSparseGraph();
String[] v = createVertices(10);
createEdges(v);
vv = new VisualizationImageServer<String,Number>(new KKLayout<String,Number>(graph), new Dimension(600,600));
renderGraph(vv);
...}
此行失败:
vv = new VisualizationImageServer<String,Number>(new KKLayout<String,Number>(graph), new Dimension(600,600));
错误消息片段:
java.lang.ArrayStoreException: edu.uci.ics.jung.algorithms.layout.KKLayout
at edu.uci.ics.jung.visualization.layout.ObservableCachingLayout.<init>(ObservableCachingLayout.java:50)
at edu.uci.ics.jung.visualization.DefaultVisualizationModel.setGraphLayout(DefaultVisualizationModel.java:91)
at edu.uci.ics.jung.visualization.DefaultVisualizationModel.<init>(DefaultVisualizationModel.java:74)
at edu.uci.ics.jung.visualization.BasicVisualizationServer.<init>(BasicVisualizationServer.java:150)
at edu.uci.ics.jung.visualization.VisualizationImageServer.<init>(VisualizationImageServer.java:40)
我最好的猜测是,在您的服务器端代码中,您有多个相互冲突的 jung 版本。
在 jung-visualization 2.0 版 ObservableCachingLayout
的第 50 行,委托 (KKLayout
) 被添加到 org.apache.commons.collections15.Transformer[]
数组,因为 KKLayout
委托是(应该是)Transformer
的一个实例。
你的数组存储异常调用 KKLayout
作为问题让我认为 ObservableCachingLayout
的早期版本 2.0 正在获得 2.1 或更高版本的 KKLayout
委托(来自 jung-algorithms ) 不是 Transformer
,而是 com.google.common.base.Function
。
我无法验证这是否是实际问题,但我相信这个理论解决了您所看到的特定错误的可能原因。