Не удается запустить jar из командной строки, poi-ooxml …xssf.usermodel.XSSFCellStyle игнорируется.

Вопрос или проблема

У меня есть простая программа на Java, которая создает предварительно отформатированный файл Excel из CSV, и я хотел бы получить ее в формате JAR, чтобы запускать на хосте Windows. В Netbeans она работает уже много лет, но когда я нажимаю “очистить и собрать”, чтобы сгенерировать JAR, а затем тестирую его из командной строки с помощью команды java, я получаю следующую ошибку: “Ошибка: произошла ошибка JNI, пожалуйста, проверьте вашу установку и попробуйте снова Исключение в потоке “main” java.lang.NoClassDefFoundError: org/apache/poi/ss/usermodel/CellStyle”

Это кажется мне странным, потому что я не использую SS.usermodel.CellStyle, а использую интерфейс XSSF.usermodel.XSSFCellStyle. Почему он жалуется на SS?

Зависимости poi и poi-ooxml обе включены с одной и той же версией 5.0.0, потому что я использую классы, которые я нашел только в простом poi.

Я увлеченный, поэтому возможно, я забыл что-то основное, но я правда не знаю, что. Можете помочь мне? 🙂 Нужны ли какие-либо дополнительные детали?

Я пытался запустить программу на Java из командной строки, но безуспешно.

Ответ или решение

Проблема, с которой вы столкнулись, связана с тем, что ваша программа не может найти нужные классы во время выполнения, что вызывает ошибку NoClassDefFoundError. Давайте рассмотрим возможные причины и шаги для решения этой проблемы:

Причины проблемы:

  1. Недостаток зависимостей в JAR-файле:
    При сборке вашего проекта в JAR-файл, NetBeans может не включить все необходимые зависимости (библиотеки). В вашем случае библиотеки Apache POI (включая poi и poi-ooxml) могут быть не доступны в класспассе, когда вы пытаетесь запустить JAR-файл из командной строки.

  2. Неправильный путь к библиотекам:
    Если вы вызываете JAR-файл с командной строки, необходимо убедиться, что путь к библиотекам указан правильно.

Решение:

  1. Соберите все зависимости:
    Вам нужно создать «укомплектованный» JAR-файл, который будет содержать ваш код и все необходимые зависимости. Это можно сделать с помощью таких инструментов, как Maven или Gradle, или настроив NetBeans на сборку «fat JAR» (или «uber JAR»).

    Для Maven можно использовать плагин maven-shade-plugin. Добавьте следующий фрагмент в ваш файл pom.xml:

    <build>
       <plugins>
           <plugin>
               <groupId>org.apache.maven.plugins</groupId>
               <artifactId>maven-shade-plugin</artifactId>
               <version>3.2.4</version>
               <executions>
                   <execution>
                       <phase>package</phase>
                       <goals>
                           <goal>shade</goal>
                       </goals>
                       <configuration>
                           <transformers>
                               <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                                   <mainClass>ваш.главный.класс</mainClass>
                               </transformer>
                           </transformers>
                       </configuration>
                   </execution>
               </executions>
           </plugin>
       </plugins>
    </build>

    Если вы используете Gradle, воспользуйтесь плагином Shadow:

    plugins {
       id 'com.github.johnrengelman.shadow' version '7.1.0'
    }
    
    shadowJar {
       manifest {
           attributes 'Main-Class': 'ваш.главный.класс'
       }
    }
  2. Запуск JAR-файла:
    После того как вы соберете ваш проект в «fat JAR», попробуйте запустить его с помощью команды:

    java -jar ваш_файл.jar
  3. Проверка установки JDK:
    Если проблема продолжает возникать, убедитесь, что ваша установка JDK/Java работает корректно. Можно сделать это, выполнив команду:

    java -version
  4. Проверка кода:
    Убедитесь, что ваш код правильно импортирует необходимые классы. Возможно, стоит пересмотреть, нет ли других зависимостей, которые должны быть подключены.

Заключение:

Если вы выполните все шаги, описанные выше, это должно позволить вам успешно запустить вашу программу из JAR-файла без ошибок. Если проблема все еще сохраняется, рассмотрите возможность создания простого примера для дальнейшего анализа или проверки конфигурации вашего проекта на наличие других ошибок.

Оцените материал
Добавить комментарий

Капча загружается...