【问题标题】:NoClassDefError while getting EntityManagerFactory instance获取 EntityManagerFactory 实例时出现 NoClassDefError
【发布时间】:2014-08-01 08:44:44
【问题描述】:

我正在使用应用引擎后端构建一个 android 应用程序。但是要将实体插入数据存储区,我无法获取 entitymanagefactoy(EMF) 实例,因为它会引发 NoClassDefFound 错误。我已经尝试了之前问题中建议的几乎所有解决方案。

Eclipse 版本:4.2.0 使用 Jre7 并使用 apengine-java-sdk-1.8.8

谷歌插件生成的EMF类:

import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;

public final class EMF {
    private static final EntityManagerFactory emfInstance = Persistence.createEntityManagerFactory("transactions-optional");

    private EMF() {
    }

    public static EntityManagerFactory get() {
        return emfInstance;
    }
}

persistence.xml:

<?xml version="1.0" encoding="UTF-8" ?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
    http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" version="1.0">

    <persistence-unit name="transactions-optional">
        <provider>org.datanucleus.api.jpa.PersistenceProviderImpl</provider>

        <properties>
            <property name="datanucleus.NontransactionalRead" value="true"/>
            <property name="datanucleus.NontransactionalWrite" value="true"/>
            <property name="datanucleus.ConnectionURL" value="appengine"/>

        </properties>
    </persistence-unit>
</persistence>

【问题讨论】:

    标签: android google-app-engine jpa


    【解决方案1】:

    你是否在 java build path -> order 和 export 中标记了依赖项? 此外,我曾经遇到过类似的问题,因为第三个库需要自己的依赖项,这些依赖项已由 eclipse 解决,但在运行时没有工作,因为它们包含在主项目而不是库本身中。

    【讨论】:

    • jpa 版本有问题。我将它更改为版本 1,它可以工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-08
    • 1970-01-01
    • 2023-01-25
    • 2011-12-13
    • 2021-12-19
    • 1970-01-01
    相关资源
    最近更新 更多