【问题标题】:Geotools Feature Tutorial ClassFormatErrorGeotools 功能教程 ClassFormatError
【发布时间】:2021-03-01 15:49:21
【问题描述】:

我试图通过geotools 的Feature Tutorial 工作。一切都很顺利,直到我找到了应该将特征存储在 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。

感谢您的帮助。

【问题讨论】:

  • 请添加您正在使用的代码版本和JVM并检查mvn依赖:树输出,它应该包含org.locationtech.jts:jts-core:jar:1.17.1:compile
  • mvn dependency:tree 输出中缺少此行。所以我检查了pom文件并将geotools版本更改为24-shapshot并更新了项目。现在我找到了 org.locantiontech.jts.... 条目,一切正常。我对这个错误感到困惑,因为它以前运行良好,并且在我没有更改 pom 文件的情况下发生了错误。感谢您的帮助。

标签: geotools classformaterror


【解决方案1】:

看起来您的项目缺少一两个 jar。此外,GeoTools 并不真正支持除 1.8 和 11 之外的任何 JVM,但总是很高兴听到它在其他版本中工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-09
    • 1970-01-01
    • 2020-03-26
    • 1970-01-01
    • 1970-01-01
    • 2014-04-11
    相关资源
    最近更新 更多