GRAVE:调用后端方法时发生异常java.lang.IncompatibleClassChangeError:实现类

时间:2018-02-11 23:46:51

标签: java xml maven google-app-engine

我在eclipse氧气项目中使用google app engine标准maven,我已经发布了一些服务,我使用JDO(https://cloud.google.com/appengine/docs/standard/java/datastore/jdo/overview-dn2)来保存非sql数据库。

我称之为一切的代码是:

jdoconfig file:
<?xml version="1.0" encoding="utf-8"?>
<jdoconfig xmlns="http://java.sun.com/xml/ns/jdo/jdoconfig"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/jdo/jdoconfig http://java.sun.com/xml/ns/jdo/jdoconfig_3_0.xsd">

    <persistence-manager-factory name="transactions-optional">
        <property name="javax.jdo.PersistenceManagerFactoryClass"
            value="org.datanucleus.api.jdo.JDOPersistenceManagerFactory" />
        <property name="javax.jdo.option.ConnectionURL" value="appengine" />
        <property name="javax.jdo.option.NontransactionalRead" value="true" />
        <property name="javax.jdo.option.NontransactionalWrite"
            value="true" />
        <property name="javax.jdo.option.RetainValues" value="true" />
        <property name="datanucleus.appengine.autoCreateDatastoreTxns"
            value="true" />
        <property name="datanucleus.appengine.singletonPMFForName"
            value="true" />
    </persistence-manager-factory>
</jdoconfig>
Java中的

代码片段:

PersistenceManager mgr = null;
Cursor cursor = null;
List<Course> execute = null;

try {
    mgr = getPersistenceManager();

片段pom.xml:

<dependency>
    <groupId>org.datanucleus</groupId>
    <artifactId>datanucleus-api-jdo</artifactId>
    <version>5.1.4</version>
</dependency>

         $ {project.build.directory} / $ {} project.build.finalName / WEB-INF / classes目录                           org.codehaus.mojo             版本 - Maven的插件             2.3                                                   编                                              显示依赖关系的更新                         显示插件,更新                                                            

    <plugin>
        <groupId>com.google.cloud.tools</groupId>
        <artifactId>appengine-maven-plugin</artifactId>
        <version>${appengine.maven.plugin.version}</version>
    </plugin>
    <plugin>
        <groupId>org.datanucleus</groupId>
        <artifactId>maven-datanucleus-plugin</artifactId>
        <version>3.2.0-m1</version>
        <configuration>
            <api>JDO</api>
            <props>${basedir}/datanucleus.properties</props>
            <verbose>true</verbose>
            <enhancerName>ASM</enhancerName>
        </configuration>
        <dependencies>
            <dependency>
                <groupId>org.datanucleus</groupId>
                <artifactId>datanucleus-core</artifactId>
                <version>5.1.4</version>
            </dependency>
        </dependencies>
    </plugin>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-war-plugin</artifactId>
        <version>2.6</version>
        <configuration>
            <webResources>
                <resource>
                    <directory>${basedir}/src/main/webapp/WEB-INF</directory>
                    <filtering>true</filtering>
                    <targetPath>WEB-INF</targetPath>
                </resource>
            </webResources>
        </configuration>
    </plugin>
</plugins>

但是我收到以下错误:

enter image description here

1 个答案:

答案 0 :(得分:0)

您获得的异常意味着您运行的类具有父类或扩展自您开始开发代码以来已修改的接口。您所要做的就是修改用于运行代码的类,并使用新的更改重新运行它。您可以找到有关此here的更多信息。

这可能与您在问题中附加的链接中收到的警告有关。它告诉您DataNucleus插件已更新为使用较新版本(从2.x到3.x),因此您必须将相关更改应用于您的代码才能使其正常工作。