我正在尝试运行一个基本的JUNG图形示例--我能够在一个独立的java程序中运行以下代码,但是当我将相同的代码放在使用Maven构建的服务器端jar中时,它在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)发布于 2018-03-08 12:41:06
我最好的猜测是,在您的服务器端代码中,您有多个版本的jung,它们之间存在冲突。在jung可视化版本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。我不能证实这是实际的问题,但我相信这个理论解决了你所看到的具体错误的可能原因。
https://stackoverflow.com/questions/49161735
复制相似问题