我正在研究javaee,我正在使用tomcat和postgres在ubuntu服务器上执行项目。 当我尝试执行servlet时,出现此错误:
java.lang.ClassNotFoundException: javax.persistence.EntityTransaction
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1718)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1569)
ejemploLoginMVC.Modelo.Conexion.crearla(Conexion.java:50)
ejemploLoginMVC.Controller.nuevoUsuario.doPost(nuevoUsuario.java:47)
javax.servlet.http.HttpServlet.service(HttpServlet.java:646)
javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
usuario.java
@Entity
public class Usuario {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private int id_Usuario;
@Column(nullable=false)
private String nick;
@Column(nullable=false)
private String password;
public String getNick() {
return nick;
}
public void setNick(String nick) {
this.nick = nick;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
Conexion.java
public class Conexion {
private static EntityManagerFactory emf;
private static EntityManager em;
private static EntityTransaction tx;
String nick;
String pass;
public Conexion(String nick,String pass){
this.nick=nick;
this.pass=pass;
}
@BeforeClass
public static void initEntityManager() throws Exception {
emf = Persistence.createEntityManagerFactory("usuarios-unit");
em = emf.createEntityManager();
}
@AfterClass
public static void closeEntityManager() throws SQLException {
if (em != null) em.close();
if (emf != null) emf.close();
}
@Before
public void initTransaction() {
tx = em.getTransaction();
}
public void crearla() throws Exception{
Usuario usuario=new Usuario();
usuario.setNick(nick);
usuario.setPassword(pass);
tx.begin();
em.persist(usuario);
tx.commit();
em.close();
emf.close();
}
}
nuevoUsuario.java(servlet)
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
response.setContentType("text/html;charset=UTF-8");
String nick = request.getParameter("nick");
String pass = request.getParameter("pass");
Conexion conexion= new Conexion(nick,pass);
try {
conexion.crearla();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try(PrintWriter out =response.getWriter()){
out.println("<!DOCTYPE html>");
out.println("<html>");
out.println("<head>");
out.println("</head>");
out.println("<body>");
out.println("<p>USUARIO:"+nick+"</p>");
out.println("<p>PASSWORD:"+pass+"</p>");
out.println("</body>");
out.println("</html>");
}
我无法找到错误,我添加到项目中:postgresql-jdbc4.jar,javaee-api-6.0,tomcat jars,tomee jars等
谢谢:D
答案 0 :(得分:0)
总结对问题的评论:
抛出ClassNotFoundException
因为无法找到JPA相关的类。 Tomcat没有提供开箱即用的JPA支持。要么使用TomEE,要么将JPA相关(可能还有)JAR添加到tomcat的lib文件夹(在您的情况下为/ usr / share / tomcat7 / lib),或者在部署WAR文件时将它们添加到Web应用程序lib文件夹中。 / p>
请记住,如果将JAR添加到tomcat的lib文件夹,它们将由您部署的所有应用程序共享。
有关如何组成Web /企业应用程序的概述,请参阅http://docs.oracle.com/javaee/7/tutorial/packaging.htm,例如。
答案 1 :(得分:0)
您必须将Hibernate或其他JPA实现添加到classPath或...使用Spring。