2013-11-09 21 views
5

Geotools 10.1 kullanarak bir şekil dosyasından öznitelikleri okuyorum. Tüm özellikler özelliğini yazdırdıktan sonra neden bir istisna attığını anlamıyorum. Bu kod neden geotools kullanarak bir şekil dosyasını okuduğunu bu özel durumu atar?

Bu

örnek kodudur:

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(); 
    } 

} 

}

İstisna:

Exception in thread "main" java.lang.IllegalArgumentException: Expected requestor [email protected]c9b619 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) 
+0

Bu aynı hatayı alıyorum. Nasıl çözersiniz? – shorif2000

+0

@sharif Read cevabı doğru olarak işaretlendi. – angelcervera

cevap

9

O çıkmadan önce dataStore.dispose(); yürütmek gereklidir.

+0

eklemek için, bu şekilde bir şekil dosyasına eriştiğimde, Java 7 + kullanıp kullanmasanız bile kaynakları kullanmayı denemek için dispose() yöntemini çağırmak üzere son olarak bir blok ekliyorum. – markg