Исключение нулевого указателя - это индикатор того, что вы используете объект, не инициализируя его.
Например, ниже - класс ученика, который будет использовать его в нашем коде.
public class Student {
private int id;
public int getId() {
return this.id;
}
public setId(int newId) {
this.id = newId;
}
}
Приведенный ниже код дает вам исключение с нулевым указателем.
public class School {
Student obj_Student;
public School() {
try {
obj_Student.getId();
}
catch(Exception e) {
System.out.println("Null Pointer ");
}
}
}
Поскольку вы используете Obj_Student
, но вы забыли инициализировать его, как в правильном коде, показанном ниже:
public class School {
Student obj_Student;
public School() {
try {
obj_Student = new Student();
obj_Student.setId(12);
obj_Student.getId();
}
catch(Exception e) {
System.out.println("Null Pointer ");
}
}
}
У меня была та же проблема, и не случалось так, что это не могло найти файл persistence.xml, но что это не могло найти поставщика указанным в XML.
Удостоверьтесь, чтобы у Вас были корректные зависимости поставщика JPA и корректное определение поставщика в Вашем XML-файле.
т.е. <provider>oracle.toplink.essentials.PersistenceProvider</provider>
Со знатоком я должен был установить эти 2 банки toplink-основ локально, поскольку не было никаких общедоступных репозиториев, которые содержали зависимости.
Если это находится на окнах, можно использовать procmon sysinternal, чтобы узнать, проверяет ли он правильный путь.
Просто фильтр путем-> содержит-> persistence.xml. Procmon возьмет любые попытки открыть файл под названием persistenc.xml, и можно проверить для наблюдения пути или путей, которые пробуют.
Посмотрите здесь для большего количества детали о procmon: http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx
мы получили ту же проблему, делаем некоторую тонкую настройку на проекте и наконец находим следующую проблему (более четкое описание ошибки): в оракуле toplink.essentials.ejb.cmp3.persistence. PersistenceUnitProcessor.computePURootURL(PersistenceUnitProcessor.java:248)
С той информацией мы вспомнили основное правило: НИКАКИЕ ПРОБЕЛЫ В ПУТЯХ!!!
Попробуйте это. Работы для нас улыбка. Возможно, однажды это будет зафиксировано.
Надеюсь, что это работает на Вас.Удачи.
Я использую Maven2 и забыл добавить эту зависимость в свой файл pom.xml:
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>3.4.0.GA</version>
</dependency>
Просто решил одинаковую проблему с проектом JPA на основе Maven / Eclipse.
У меня был каталог META-INF под SRC / Main / Java
с приемлемом, что он не был скопирован в целевой каталог до фазы теста.
Перемещение этого каталога к SRC / Main / Resources
Решил проблему и гарантировал, что в присутствовал
Когда испытания были запущены. Meta-Inf / Spistence.xml
файл / классы
Я думаю , что аспект JPA поставил мой файл Meta-inf / Pinsistence.xml
в SRC / Main / Java
, что оказалось корень моей проблемы.
Ваш persistence.xml находится в scr/test/resources? Потому что я столкнулся с похожей проблемой.
Все работает нормально, пока мой persistence.xml находится в src/main/resources.
Если я перемещаю persistence.xml в src/test/resources, то ничего не работает.
Единственный полезный, но печальный ответ находится здесь: http://jira.codehaus.org/browse/SUREFIRE-427
Похоже, что сейчас это невозможно по непонятным причинам :-(