在查看了涉及这两个课程的其他几十个SO问题后,我得出的结论是,这可能是一个新的问题。
有问题的代码涉及Eclipse(kepler),Maven和GeoTools - 特别是他们教程中的ImageLab副本,我已经部分删除了Style类。我改变了一些代码来创建一个RGB样式来替换示例使用的灰度样式 - 突然我在这个片段上得到了一个ClassNotFoundException:
Layer rasterLayer = new GridReaderLayer(reader, rgbStyle);
如果我在那里放置一个断点并进入该构造函数,我立即在org.geotools.data.FeatureSource上获得CNFE。这是一个相当频繁使用的类,但是在gt-api jar中,它已经下载并且位于我的Maven Dependencies文件夹中。事实上,我甚至可以把它放在这一行之上:
FeatureSource<?,?> source = null;
...这很快就编译了,仍然在该构造函数之后抛出CNFE。它找到它,然后它找不到它?
如果我只是在不使用调试模式的情况下运行应用程序,那么CNFE就会被静静地捕获和吃掉 - 稍后它会在发现Layer的样式对象为空时抛出NPE。
我尝试重新启动Eclipse,并运行Project&gt;清理几次 - 同样的问题。 gt-api.jar(具体来说,gt-api-12-RC1.jar)位于该项目的构建路径中。我无法进入URLClassLoader,看看它在哪里;或者至少,我不知道如何。
任何人都可以解释这种奇怪的行为,或者更好,建议一个解决方案吗?或者,任何人都可以告诉我如何更好地了解URLClassLoader正在做什么,或者它认为它的类路径是什么?