java - 尝试以下发现的实现后,没有可用于 "myDB"的持久性提供程序

标签 java gwt persistence eclipselink rpc

嗨,当我在 gwt 项目上运行 RPC 方法时,我收到此异常,我不明白为什么...... 我使用 EclipseLink 和 HSQLDB

SEVERE: javax.servlet.ServletContext log: Exception while dispatching incoming RPC call
com.google.gwt.user.server.rpc.UnexpectedException: Service method 'public abstract void     
 it.project.client.service.EmployeeService.createemployees()' threw an unexpected  
exception:javax.persistence.PersistenceException: No persistence providers available for
"myPU" after trying the following discovered implementations:  
org.datanucleus.api.jpa.PersistenceProviderImpl
at com.google.gwt.user.server.rpc.RPC.encodeResponseForFailure(RPC.java:389)

这是电话: MyProject.java

    public class MyProject implements EntryPoint {  

     private final EmployeeServiceAsync aService = (EmployeeServiceAsync)             GWT.create(EmployeeService.class);

       @Override
       public void onModuleLoad() {

         aService.createemployee(new AsyncCallback<Void>() {
            @Override
            public void onFailure(Throwable caught) {
                Window.alert("Creation Employees failed!");
            }
            @Override
            public void onSuccess(Void result) {
                Window.alert("Creation success!");
            }
        });

这是给出异常的方法: EmployeeService.java

package com.example.client.service;
  @RemoteServiceRelativePath("employeeService")
  public interface EmployeeService extends RemoteService{

  public void createemployee();
}

EmployeeServiceImpl.java

package com.example.server.ServiceImpl;
public class EmployeeServiceImpl extends RemoteServiceServlet implements EmployeeService              {

private static final long serialVersionUID = 1L;

public void createemployee() {

javax.persistence.EntityManagerFactory emf =      Persistence.createEntityManagerFactory("ronfPU");
javax.persistence.EntityManager em = emf.createEntityManager();


   try {
      // Create new Employee
      em.getTransaction().begin();
      Employee e1 = new Employee();
      e1.setName("admin");
      e1.setPassword("admin");
      em.persist(a1);
      em.getTransaction().commit();
   } 
   finally {
     em.close();
   }   
 }
}

这些是我的构建路径的 jar:

eclipselink.jar

gwt-servlet.jar

hsqldb.jar

javax.persistence_2.0.4.jar

persistence-api-sources-2.0.jar

smartgwt.jar

感谢您的帮助!

最佳答案

该错误似乎表明您的类路径上没有 eclipselink.jar。

尝试一个简单的 Class.forName("org.eclipse.persistence.jpa.PersistenceProvider")

关于java - 尝试以下发现的实现后,没有可用于 "myDB"的持久性提供程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17680861/

相关文章:

java - 无法引用同一类中的类对象 A?

java - 如何检测包名冲突

java - 如何让 Mockito 模拟另一个文件中的常量?

GWT CellTable 和 ListBoxes 复杂标识符

java - 在 gwt 应用程序中滚动到页面顶部

java - 如何创建一个名称稍作修改并位于同一文件夹中的新文件?

java - Linkedhashmap<字符串,对象>

gwt - 获取 UiBinder 小部件以内联显示而不是 block 显示

objective-c - 通过 Web 服务将持久项目上传到磁盘

hibernate - H2 数据库 c3p0 代理与 hibernate 。无法加载 driverClass org.h2.Drive