Исключение Maven и Class не найдено при запуске файла .jar - PullRequest
2 голосов
/ 10 июля 2020

Я начал изучать maven с помощью простого приложения hello world и добавил некоторые зависимости:

    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-simple</artifactId>
        <version>${slf4j.version}</version>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>${slf4j.version}</version>
    </dependency>

И изменил System.out.println("Hello World") на:

    var logger = LoggerFactory.getLogger(App.class);
    logger.info("Hello World");

Затем я создал файл .jar с помощью maven жизненный цикл, и когда я пытаюсь запустить его, я получаю эту ошибку:

    Exception in thread "main" java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory
    at io.github.mat3e.App.main(App.java:11)
    Caused by: java.lang.ClassNotFoundException: org.slf4j.LoggerFactory
    at           java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:602)
    at   java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
    ... 1 more

Почему это?

1 Ответ

0 голосов
/ 10 июля 2020

Рекомендуемый способ использования API регистратора SLF4J путем добавления следующей зависимости:

        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>1.2.3</version>
        </dependency>

В вашем классе java выберите экземпляр регистратора следующим образом:

 private static final Logger logger = LoggerFactory.getLogger(App.class); 
 logger.info("Hello World");

Должно работать нормально.

см. Документацию

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...