Руководство по быстрому запуску Geotools JFileDataStoreChooser.showOpenFile вызывает ошибку
Я просматривал учебное пособие по быстрому запуску Geotools с использованием Eclipse http://docs.geotools.org/latest/userguide/tutorial/quickstart/eclipse.html Я следовал всем шагам, и все прошло хорошо, пока я не запустил класс Quickstart
Когда я запускаю класс Quickstart. Я получил эту ошибку
Exception in thread "main" java.lang.NullPointerException
at sun.awt.shell.Win32ShellFolder2.getFileSystemPath(Win32ShellFolder2.java:571)
at sun.awt.shell.Win32ShellFolder2.access$400(Win32ShellFolder2.java:72)
at sun.awt.shell.Win32ShellFolder2$2.call(Win32ShellFolder2.java:298)
at sun.awt.shell.Win32ShellFolder2$2.call(Win32ShellFolder2.java:296)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at sun.awt.shell.Win32ShellFolderManager2$ComInvoker$3.run(Win32ShellFolderManager2.java:502)
at java.lang.Thread.run(Thread.java:722)
И я обнаружил, что этот метод вызывает проблему JFileDataStoreChooser.showOpenFile
Я закомментировал все остальные строки, за исключением одной, используя метод выше, и все еще получил ту же ошибку. (нет ошибки, если я прокомментировал эту строку)
package org.geotools.tutorial;
import java.io.File;
import org.geotools.data.FileDataStore;
import org.geotools.data.FileDataStoreFinder;
import org.geotools.data.simple.SimpleFeatureSource;
import org.geotools.map.FeatureLayer;
import org.geotools.map.Layer;
import org.geotools.map.MapContent;
import org.geotools.styling.SLD;
import org.geotools.styling.Style;
import org.geotools.swing.JMapFrame;
import org.geotools.swing.data.JFileDataStoreChooser;
/**
* Prompts the user for a shapefile and displays the contents on the screen in a map frame.
* <p>
* This is the GeoTools Quickstart application used in documentationa and tutorials. *
*/
public class Quickstart {
/**
* GeoTools Quickstart demo application. Prompts the user for a shapefile and displays its
* contents on the screen in a map frame
*/
public static void main(String[] args) throws Exception {
// display a data store file chooser dialog for shapefiles
/*********This is the line *********/
File file = JFileDataStoreChooser.showOpenFile("shp", null);
/***********************************/
// if (file == null) {
// return;
// }
//
// FileDataStore store = FileDataStoreFinder.getDataStore(file);
// SimpleFeatureSource featureSource = store.getFeatureSource();
//
// // Create a map content and add our shapefile to it
// MapContent map = new MapContent();
// map.setTitle("Quickstart");
//
// Style style = SLD.createSimpleStyle(featureSource.getSchema());
// Layer layer = new FeatureLayer(featureSource, style);
// map.addLayer(layer);
//
// // Now display the map
// JMapFrame.showMap(map);
}
}
Также в pom.xml я попробовал версии 8.0-M2 и 8-SNAPSHOT. но не повезло...
У кого-нибудь есть идеи? Что-то не так с модулем geotools.swing?
Спасибо
2 ответа
Вероятно, это ошибка с sun.awt.shell.Win32ShellFolder2.getFileSystemPath
метод, который вызывает NPE.
Один предлагает использовать JDK 1.6.0u21 или выше, чтобы решить эту проблему.
Проверьте в Google с ключевыми словами "NullPointerException sun.awt.shell.Win32ShellFolder2"
Я также пробовал руководство по быстрому запуску Geotools, и у меня была та же проблема.
Я наконец добавляю:
import org.geotools.data.shapefile.*;
и изменить
FileDataStore store = FileDataStoreFinder.getDataStore(file);
от
ShapefileDataStore store = new ShapefileDataStore(file.toURI().toURL());
Это не решает вопрос об исключении, но может быть альтернативой.