나는 JPA를 처음 사용합니다. 일부 테이블을 채우려면 Oracle 10.3 데이터베이스에 연결하려고 내 코드. 그러나 코드가 채워지기 전에 EntityManagerFactoryImpl.createEntityManager (String)에 NullPointerException을 발생시킵니다. emf
변수가 null이 아닌지 이미 확인했습니다. 여기에 단지 많은 튜토리얼 예제처럼 Populator.java의 관련 코드는 다음과 같습니다EntityManagerFactoryImpl.createEntityManager()에서 NullPointerException이 발생하는 이유는 무엇입니까?
public static void main(String[] args) {
EntityManagerFactory emf =
Persistence.createEntityManagerFactory("LeaveSchedulerJPA");
EntityManager em = emf.createEntityManager();
예외 추적은 다음과 같습니다
[EL Severe]: 2012-10-11 14:37:02.415--ServerSession(37999235)--java.lang.NullPointerException
at java.util.ResourceBundle.getBundle(ResourceBundle.java:950)
at org.eclipse.persistence.exceptions.i18n.ExceptionMessageGenerator.buildMessage(ExceptionMessageGenerator.java:47)
at org.eclipse.persistence.exceptions.ValidationException.errorDecryptingPassword(ValidationException.java:864)
at org.eclipse.persistence.internal.security.JCEEncryptor.decryptPassword(JCEEncryptor.java:124)
at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.updateLogins(EntityManagerSetupImpl.java:1183)
at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.updateServerSession(EntityManagerSetupImpl.java:1450)
at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:372)
at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.getServerSession(EntityManagerFactoryImpl.java:164)
at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManagerImpl(EntityManagerFactoryImpl.java:221)
at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:209)
at com.engilitycorp.leaveschedulerjpa.Populator.main(Populator.java:28)
내의 persistence.xml은 다음과 같습니다. 지정된 URL은 Eclipse에서이 URL을 사용하여 테이블에 해당하는 클래스를 생성 할 때 작동합니다. 어떤 아이디어?
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" 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_2_0.xsd">
<persistence-unit name="LeaveSchedulerJPA" transaction-type="RESOURCE_LOCAL">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<class>com.engilitycorp.leaveschedulerjpa.Holiday</class>
<class>com.engilitycorp.leaveschedulerjpa.Leave</class>
<class>com.engilitycorp.leaveschedulerjpa.LeaveType</class>
<class>com.engilitycorp.leaveschedulerjpa.Notification</class>
<class>com.engilitycorp.leaveschedulerjpa.NotificationType</class>
<class>com.engilitycorp.leaveschedulerjpa.Role</class>
<class>com.engilitycorp.leaveschedulerjpa.User</class>
<properties>
<property name="javax.persistence.jdbc.url" value="jdbc:oracle:thin:@localhost:1521:xe"/>
<property name="javax.persistence.jdbc.user" value="leavescheduler"/>
<property name="javax.persistence.jdbc.password" value="xxxx"/>
<property name="javax.persistence.jdbc.driver" value="oracle.jdbc.OracleDriver"/>
</properties>
</persistence-unit>
</persistence>
오류는 자신이 좋아하지 않는다 ... 오류가 발생했다는 것을 알려주지 만 알 수없는 예외에 알맞은 메시지를 넣기 위해 자원 번들 (영광스러운 속성 파일)을 찾을 때 번들. 모든 JPA 병이 클래스 경로에 있는지 확인합니다. 그럼 진짜 오류를 찾을 수 있습니다 : - D – SJuan76
SJuan76 : 아이디어 주셔서 감사합니다. 내 애플리케이션이 잘 컴파일되어 모든 javax.persistence. * 클래스가 발견됩니다. 컴파일 타임에 존재하지 않는 런타임에 무엇이 필요합니까? (저는 컴파일과 실행 둘다 Eclipse에서 실행 중입니다.) – kc2001
어느 항아리가 빠졌는지 알려주는 식 지속성의 구조를 알지 못합니다.하지만 그 항아리에서만 번들을 사용한다면 번들의 존재가 확인되지 않기 때문에 컴파일 타임에 오류를 볼 수 없습니다. – SJuan76