persistence.xml, не найденный во время знатока, тестирующего

Исключение нулевого указателя - это индикатор того, что вы используете объект, не инициализируя его.

Например, ниже - класс ученика, который будет использовать его в нашем коде.

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 ");
        }
    }
}
9
задан sblundy 16 September 2008 в 20:25
поделиться

6 ответов

У меня была та же проблема, и не случалось так, что это не могло найти файл persistence.xml, но что это не могло найти поставщика указанным в XML.

Удостоверьтесь, чтобы у Вас были корректные зависимости поставщика JPA и корректное определение поставщика в Вашем XML-файле.

т.е. <provider>oracle.toplink.essentials.PersistenceProvider</provider>

Со знатоком я должен был установить эти 2 банки toplink-основ локально, поскольку не было никаких общедоступных репозиториев, которые содержали зависимости.

2
ответ дан 4 December 2019 в 07:36
поделиться

Если это находится на окнах, можно использовать procmon sysinternal, чтобы узнать, проверяет ли он правильный путь.

Просто фильтр путем-> содержит-> persistence.xml. Procmon возьмет любые попытки открыть файл под названием persistenc.xml, и можно проверить для наблюдения пути или путей, которые пробуют.

Посмотрите здесь для большего количества детали о procmon: http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx

2
ответ дан 4 December 2019 в 07:36
поделиться

мы получили ту же проблему, делаем некоторую тонкую настройку на проекте и наконец находим следующую проблему (более четкое описание ошибки): в оракуле toplink.essentials.ejb.cmp3.persistence. PersistenceUnitProcessor.computePURootURL(PersistenceUnitProcessor.java:248)

С той информацией мы вспомнили основное правило: НИКАКИЕ ПРОБЕЛЫ В ПУТЯХ!!!

Попробуйте это. Работы для нас улыбка. Возможно, однажды это будет зафиксировано.

Надеюсь, что это работает на Вас.Удачи.

1
ответ дан 4 December 2019 в 07:36
поделиться

Я использую Maven2 и забыл добавить эту зависимость в свой файл pom.xml:

 <dependency>
   <groupId>org.hibernate</groupId>
   <artifactId>hibernate-entitymanager</artifactId>
   <version>3.4.0.GA</version>
 </dependency> 
6
ответ дан 4 December 2019 в 07:36
поделиться

Просто решил одинаковую проблему с проектом JPA на основе Maven / Eclipse.

У меня был каталог META-INF под SRC / Main / Java с приемлемом, что он не был скопирован в целевой каталог до фазы теста.

Перемещение этого каталога к SRC / Main / Resources Решил проблему и гарантировал, что в присутствовал Meta-Inf / Spistence.xml файл / классы Когда испытания были запущены.

Я думаю , что аспект JPA поставил мой файл Meta-inf / Pinsistence.xml в SRC / Main / Java , что оказалось корень моей проблемы.

16
ответ дан 4 December 2019 в 07:36
поделиться

Ваш persistence.xml находится в scr/test/resources? Потому что я столкнулся с похожей проблемой.

Все работает нормально, пока мой persistence.xml находится в src/main/resources.

Если я перемещаю persistence.xml в src/test/resources, то ничего не работает.

Единственный полезный, но печальный ответ находится здесь: http://jira.codehaus.org/browse/SUREFIRE-427

Похоже, что сейчас это невозможно по непонятным причинам :-(

2
ответ дан 4 December 2019 в 07:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: