Vivisolutions的Shapefilereader在Windows中完美运行,但在多个ubuntu实例中我收到此错误:
java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:438 at java.lang.AbstractStringBuilder.substring(AbstractStringBuilder.java:906) at java.lang.StringBuffer.substring(StringBuffer.java:482) 在org.geotools.dbffile.DbfFile.ParseRecordColumn(DbfFile.java:247) 在com.vividsolutions.jump.io.ShapefileReader.read(ShapefileReader.java:175)
读取shapefile的代码是:
public static FeatureCollection readShapefile(String shpFile)
{
File file = new File(shpFile);
if (!file.exists())
Application.logError("File does not exist " + file.getName());
ShapefileReader reader = new ShapefileReader();
FeatureCollection collection = null;
try {
collection = reader.read(new DriverProperties(shpFile));
} catch (IllegalParametersException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
return collection;
}
我确保windows机器和ubuntu机器都安装了相同版本的java。
在ubuntu中,java -version给出了
java版" 1.8.0_60" Java(TM)SE运行时环境(构建 1.8.0_60-b27)Java HotSpot(TM)64位服务器VM(内置25.60-b23,混合模式)
在windows中,java -version提供
java版" 1.8.0_60" Java(TM)SE运行时环境(构建 1.8.0_60-b27)Java HotSpot(TM)64位服务器VM(内置25.60-b23,混合模式)
他们有什么理由表现不同吗?阅读错误,geotools dbffile解析器遇到了问题。我已经做了很多搜索和测试,DBF文件看起来很好,可以在多个程序中读取,包括在Windows下运行时的这个程序。