geotools - Geotools 功能教程 ClassFormatError
问题描述
我试图通过geotools的功能教程工作。一切都很顺利,直到我找到了应该将特征存储在 shapefile 中的代码:
if (featureSource instanceof SimpleFeatureStore) {
SimpleFeatureStore featureStore = (SimpleFeatureStore) featureSource;
// List Features into Collection
SimpleFeatureCollection collection = new ListFeatureCollection(TYPE, features);
featureStore.setTransaction(transaction);
try {
featureStore.addFeatures(collection);
transaction.commit();
}catch (Exception problem) {
problem.printStackTrace();
transaction.rollback();
}finally {
transaction.close();
}
System.exit(0);
}else {
System.out.println(typeName + "does not support read/write access.");
System.exit(0);
}
运行时异常链接到行“featureStore.addFeatures(collection); 这是错误消息:
Exception in thread "main" java.lang.ClassFormatError: Illegal constant pool index 0 for method name in class file org/geotools/geometry/jts/JTS
at java.base/java.lang.ClassLoader.defineClass1(Native Method)
at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1017)
at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:151)
at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:821)
at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:719)
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:642)
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:600)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
at org.geotools.feature.simple.SimpleFeatureImpl.getBounds(SimpleFeatureImpl.java:258)
at org.geotools.data.Diff.addToSpatialIndex(Diff.java:201)
at org.geotools.data.Diff.add(Diff.java:195)
at org.geotools.data.store.DiffContentFeatureWriter.write(DiffContentFeatureWriter.java:168)
at org.geotools.data.InProcessLockingManager$1.write(InProcessLockingManager.java:296)
at org.geotools.data.store.ContentFeatureStore.addFeature(ContentFeatureStore.java:302)
at org.geotools.data.store.ContentFeatureStore.addFeatures(ContentFeatureStore.java:254)
at de.topotools.topograph.Csv2Shape.main(Csv2Shape.java:121)
我更新了 maven 项目并检查了代码是否等于教程的代码,但没有任何帮助。我也找不到与 geotools 搜索互联网有关的此错误的任何描述。
我正在使用 Java 14.0.2。
谢谢你的帮助。
解决方案
看起来您的项目缺少一两个罐子。此外,GeoTools 并不真正支持除 1.8 和 11 之外的任何 JVM,但总是很高兴听到它在其他版本中工作。
推荐阅读
- javascript - 如何在 html 中使用 python、Jinja 模板创建多页发票
- laravel - 如何自定义 php artisan ui vue --auth 文件
- javascript - 调用一个模块方法在 Javascript 中抛出未定义的错误
- python - OperatorNotAllowedInGraphError 仍然存在,启用了急切执行并添加了装饰器
- azure-devops - 如何使用 Azure DevOps 部署 Quasar 项目
- javascript - 使用正则表达式将 URL 匹配到最后一个正斜杠
- laravel - Laravel - 访问获取传递的变量?
- c# - 如何从 .Net Core 中的 HttpContext 访问声明?
- phpstorm - PhpStorm 显示我尝试编辑的文件不在我的项目中的对话框
- jquery - 如何使用未嵌套在 jquery 中的类查找下一个跨度