PDFBox с Maven - java.lang.NoClassDefFoundError

Включение отчета об ошибках является правильным решением, однако оно, похоже, не вступает в силу в программе, которая включает его, но только в последующих программах.

Таким образом, я всегда создаю файл / (который я обычно называю «genwrap.php»), который имеет по существу тот же самый код, что и популярное решение здесь (т. е. включить отчет об ошибках), а также включает в себя страницу, которую я действительно хочу вызвать.

Есть два шага для реализации этой отладки:

One - создать genwrap.php и поместить в него этот код:

<?php
error_reporting(-1);
ini_set('display_errors', 'On');

include($_REQUEST['page']);
?>

Two - изменить ссылку на программу / страницу вы хотите отлаживать переход через genwrap.php,

Например: change:

$.ajax('dir/pgm.php?param=val').done(function(data) { /* ... */

to

$.ajax('dir/genwrap.php?page=pgm.php&param=val').done(function(data) { /* ... */
1
задан kojow7 25 March 2019 в 00:32
поделиться

1 ответ

Мне не удалось найти хорошее решение, оставив файлы JAR в ~ / .m2, поэтому ответ ниже - это обходной путь, основанный на некоторых других ответах. Я буду включать дополнительные разъяснения для тех, кто новичок в PDFBox и Maven, как я.

1) Добавьте следующее в ваш файл pom.xml. Если у вас уже есть раздел <build> и <plugins>, просто добавьте к нему раздел <plugin> ниже. В противном случае вам может понадобиться добавить весь приведенный ниже код в элемент <project>:

  <build>
      <plugins>
          <plugin>
              <artifactId>maven-assembly-plugin</artifactId>
              <configuration>
                  <archive>
                      <manifest>
                          <addClasspath>true</addClasspath>
                          <mainClass>**REPLACE THIS WITH THE FULL URI OF YOUR MAIN CLASS**</mainClass>
                      </manifest>
                  </archive>
                  <descriptorRefs>
                      <descriptorRef>jar-with-dependencies</descriptorRef>
                  </descriptorRefs>
              </configuration>
              <executions>
                  <execution>
                      <id>make-my-jar-with-dependencies</id>
                      <phase>package</phase>
                      <goals>
                          <goal>single</goal>
                      </goals>
                  </execution>
              </executions>
          </plugin>
      </plugins>
  </build>

2) Убедитесь, что вы заменяете текст в элементе <mainClass> в соответствии с ситуацией. Например, если ваш метод main () находится в классе App в App.js, а имя вашего пакета - com.example.sub. Тогда вышеприведенный элемент должен выглядеть следующим образом:

<mainClass>com.example.sub.App</mainClass>

3) Чтобы скомпилировать ваше приложение, запустите mvn package

Примечание: я видел некоторые ссылки в Интернете, используя mvn clean compile assembly:single вместо mvn package , Я не уверен, какова цель этого, когда mvn package, кажется, работает отлично для меня.

Это возьмет ваш проект и все ваши зависимости и создаст один файл JAR в целевом каталоге, называемый примерно так:

java-project-1.0-SNAPSHOT-jar-with-dependencies.jar

4) Для запуска проекта вы можете сделать это :

java -cp target/java-project-1.0-SNAPSHOT-jar-with-dependencies.jar com.example.sub.App

Убедитесь, что вы изменили вышеприведенную строку в соответствии с вашей ситуацией. Другими словами, вам может потребоваться изменить как имя файла JAR, так и имя URI для вашего основного класса.

0
ответ дан kojow7 25 March 2019 в 00:32
поделиться
Другие вопросы по тегам:

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