Google App Engine ClassNotPersistenceCapableException

时间:2010-04-23 19:49:48

标签: java google-app-engine persistence

我有以下课程:

import javax.jdo.annotations.IdGeneratorStrategy;
import javax.jdo.annotations.IdentityType;
import javax.jdo.annotations.PersistenceCapable;
import javax.jdo.annotations.Persistent;
import javax.jdo.annotations.PrimaryKey;
import com.google.appengine.api.datastore.*;

@PersistenceCapable(identityType=IdentityType.APPLICATION)
public class PayPal_Message
{
  @PrimaryKey
  @Persistent(valueStrategy=IdGeneratorStrategy.IDENTITY)
  private Long id;
  @Persistent
  private Text content;
  @Persistent
  private String time;

  public PayPal_Message(Text content,String time)
  {
    this.content=content;
    this.time=time;
  }

  public Long getId() { return id; }
  public Text getContent() { return content; }
  public String getTime() { return time; }
  public void setContent(Text content) { this.content=content; }
  public void setTime(String time) { this.time=time; }
}

它曾经在一个包中,并且运行正常,现在我将所有类放在默认包中,这导致了我的错误:

org.datanucleus.jdo.exceptions.ClassNotPersistenceCapableException:类“类”PayPal_Message“不可持久化。这意味着它没有被增强,或者文件的增强版本不在CLASSPATH中(或者是被未增强的版本隐藏,或者没有找到该类的元数据/注释。“是不可持续的。这意味着它没有得到增强,或者文件的增强版本不在CLASSPATH中(或者被未增强的版本隐藏),或者找不到类的元数据。 NestedThrowables: org.datanucleus.exceptions.ClassNotPersistableException:类“PayPal_Message”不可持久化。这意味着它没有被增强,或者文件的增强版本不在CLASSPATH中(或者被未增强的版本隐藏),或者找不到类的元数据/注释。

我该怎么办才能修复它?

3 个答案:

答案 0 :(得分:0)

我有时会因为没有明显的原因而得到这些例外。

在持久化类中的某处添加空间并重建已经为我修复了它。不知道为什么会发生,或者为什么重建会修复它,但至少值得一试。

答案 1 :(得分:0)

我最终将它们放回包中,现在工作正常。

答案 2 :(得分:0)

说明:默认包中的类不是由包内的类可见/可导入的。

请尝试以下示例:

public class Entity {}

(因此没有包!)和

package persistence;

public class EntityManager {
    public static void main(String... args) {
        Entity entity = new Entity();
    }
}

有用吗?没有?你会怎么导入它?这就是幕后发生的问题!