5
geotools 10.1을 사용하여 shapefile에서 속성을 읽습니다. 모든 기능을 인쇄 한 후에 예외가 throw되는 이유를 알 수 없습니다. 왜이 코드를 사용하면 geotools를 사용하여 셰이프 파일을 읽는 것이이 예외를 throw합니까?
이
은 예제 코드입니다 :import java.io.File;
import java.io.IOException;
import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;
import org.geotools.data.DataStore;
import org.geotools.data.DataStoreFinder;
import org.geotools.data.FeatureSource;
import org.geotools.feature.FeatureCollection;
import org.geotools.feature.FeatureIterator;
import org.opengis.feature.simple.SimpleFeature;
public class LayerBusinessTest {
public static void main(String[] args) throws IOException {
File file = new File("../../setup/test/shp/sscc/SSCC2010_WGS84.shp");
Map<String, Serializable> map = new HashMap<>();
map.put("url", file.toURI().toURL());
DataStore dataStore = DataStoreFinder.getDataStore(map);
String typeName = dataStore.getTypeNames()[0];
FeatureSource source = dataStore.getFeatureSource(typeName);
FeatureCollection collection = source.getFeatures();
FeatureIterator<SimpleFeature> results = collection.features();
try {
while (results.hasNext()) {
SimpleFeature feature = (SimpleFeature) results.next();
String code = feature.getAttribute("Codigo_SSC").toString();
System.out.println(code);
}
} finally {
results.close();
}
}
}
예외 :
Exception in thread "main" java.lang.IllegalArgumentException: Expected requestor [email protected] to have locked the url but it does not hold the lock for the URL
at org.geotools.data.shapefile.files.ShpFiles.unlockRead(ShpFiles.java:429)
at org.geotools.data.shapefile.files.FileChannelDecorator.implCloseChannel(FileChannelDecorator.java:149)
at java.nio.channels.spi.AbstractInterruptibleChannel.close(AbstractInterruptibleChannel.java:115)
at org.geotools.data.shapefile.dbf.DbaseFileReader.close(DbaseFileReader.java:279)
at org.geotools.data.shapefile.ShapefileFeatureReader.close(ShapefileFeatureReader.java:248)
at org.geotools.data.store.ContentFeatureCollection$WrappingFeatureIterator.close(ContentFeatureCollection.java:154)
at LayerBusinessTest.main(LayerBusinessTest.java:39)
동일한 오류가 발생합니다. 어떻게 해결합니까? ' – shorif2000
@sharif 답변을 올바르게 읽었습니다. – angelcervera