Класс def не найден: org/glassfish/hk2/ComponentException

Мне нужно написать тесты junit для приложения на Джерси. Теперь я хочу протестировать внедрение зависимостей, и проблема в том, что я создал класс следующим образом:

@RunWith(Hk2Runner.class)
public class BinderTest {
    @Inject
    private SomeClass someClass;

    @Test
    public void passingTest() {
        someClass.getSomething("asd", "asd", "asd");
        Assert.assertTrue(true);
    }
}

При запуске вывод:

java.lang.NoClassDefFoundError: org/glassfish/hk2/ComponentException
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:760)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
    at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:368)

Я пытаюсь найти зависимость, имеющую этот класс, для добавления в файл pom.xml, но ничего не нашла. Знаете ли вы, какая зависимость maven содержит упомянутый класс ComponentException?

Зависимость добавлена ​​для того, чтобы иметь класс Hk2Runner:

<dependency>
    <groupId>org.glassfish.hk2</groupId>
    <artifactId>auto-depends</artifactId>
    <version>2.0.5</version>
</dependency>

1 ответ

Решение

Так как вы используете старый auto-depends зависимость, вы также должны добавить hk2-deprecated зависимость:

<dependency>
    <groupId>org.glassfish.hk2</groupId>
    <artifactId>hk2-deprecated</artifactId>
    <version>2.0.5</version>
    <scope>test</scope>
</dependency>

Другое решение было бы заменить auto-depends зависимость с новым hk2-testing и простираются от org.jvnet.hk2.testing.junit.HK2Runner учебный класс.

<dependency>
    <groupId>org.glassfish.hk2</groupId>
    <artifactId>hk2-testing</artifactId>
    <version>2.3.0</version>
    <scope>test</scope>
</dependency>
public class BinderTest extends HK2Runner { }
Другие вопросы по тегам