сегодня я столкнулся с необычной ситуацией .. Для тестирования Java EE я собираюсь использовать glassfi sh -embedded-all. В производстве я собираюсь использовать базу данных apache derby. Поэтому, когда я написал небольшой тестовый класс для тестирования БД, я получил эту ошибку:
java.lang.SecurityException: sealing violation: can't seal package org.apache.derby.impl.services.locks: already loaded
Мой pom:
<dependencies>
<dependency>
<groupId>org.apache.derby</groupId>
<artifactId>derby</artifactId>
<version>10.14.2.0</version>
</dependency>
<dependency>
<groupId>org.apache.derby</groupId>
<artifactId>derbynet</artifactId>
<version>10.14.2.0</version>
</dependency>
<dependency>
<groupId>org.apache.derby</groupId>
<artifactId>derbyclient</artifactId>
<version>10.14.2.0</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.glassfish.main.extras</groupId>
<artifactId>glassfish-embedded-all</artifactId>
<version>3.1.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>6.0</version>
<scope>provided</scope>
</dependency>
</dependencies>
Проблема в том, что встроенный сервер также имеет занятия дерби. Так что у меня есть классы дерви для компиляции, и я классифицировал дерби для тестов. И во время теста Это вызывает конфликт, который я не знаю, как решить.
Кажется, мне нужно игнорировать классы вывода во встроенном сервере во время теста. Есть идеи?
Мои тесты:
public class JpaTest {
private static final String PERSISTENCE_UNIT_NAME = "people";
private EntityManagerFactory factory;
@Before
public void setUp() throws Exception {
factory = Persistence.createEntityManagerFactory(PERSISTENCE_UNIT_NAME);
// Error appear here
EntityManager em = factory.createEntityManager();
PS Я не могу понять, как работают плагины Maven. Кажется, этот плагин предназначен для финальной банки. Не для модульного теста сейчас ...
PS2. Если я пытаюсь выполнить тест в каком-то методе Main, он работает нормально (потому что нет зависимости от glassfi sh)