Загрузите pdf файл в уже созданный jar - PullRequest
0 голосов
/ 22 мая 2019

Я пытаюсь получить некоторые конкретные данные из PDF-файла и сохранить их в базе данных. Идея состоит в том, что в моей программе, когда вы нажимаете кнопку с селеном, программа загружает PDF-файл и загружает его в банку, чтобы прочитать.

Я пробовал много библиотек для чтения PDF, но все они застряли в одном месте: когда я пытаюсь загрузить PDF.

Если я компилирую программу в IntelliJ, она отлично работает, проблема в том, что я компилирую ее в .jar. Застревает при загрузке и не показывает ошибку. Перепробовал все что мог но ничего не работает.

Вот как выглядит мой код прямо сейчас:

              try {

                    PdfReader reader = new PdfReader("out/artifacts/WAsNEWWINDOWS_jar/bills/facturaClaro.pdf");
                    System.out.println("This PDF has "+reader.getNumberOfPages()+" pages.");
                    String page = PdfTextExtractor.getTextFromPage(reader, 2);
                    System.out.println("Page Content:\n\n"+page+"\n\n");
                    System.out.println("Is this document tampered: "+reader.isTampered());
                    System.out.println("Is this document encrypted: "+reader.isEncrypted());
                } catch (IOException e) {
                    e.printStackTrace();
                }

Такая кодировка прекрасно работает в IntelliJ, и когда я компилирую ее в .jar, я меняю расположение файла следующим образом:

PdfReader reader = new PdfReader("bills/facturaClaro.pdf");

Любой вклад может помочь мне. Большое вам спасибо!

РЕДАКТИРОВАТЬ: Я хотел бы уточнить, что на данный момент я не загружаю PDF, я просто скопировать файл PDF в тот же каталог, что и .jar.

ОБНОВЛЕНИЕ: очевидно, оно выдавало исключение:


java.lang.NoClassDefFoundError: com/itextpdf/text/pdf/PdfReader
    at BillReader.readClaro(BillReader.java:195)
    at WebScrapper.startBillReaderClaro(WebScrapper.java:467)
    at Controller$20.call(Controller.java:4182)
    at Controller$20.call(Controller.java:4179)
    at javafx.concurrent.Task$TaskCallable.call(Task.java:1423)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.ClassNotFoundException: com.itextpdf.text.pdf.PdfReader
    at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 7 more

Я ищу решение, но ничего не работает. Пожалуйста, помогите мне! Спасибо

РЕДАКТИРОВАТЬ: мой pom.xml выглядит следующим образом, без повторения зависимостей

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>WAs</groupId>
    <artifactId>seleWA</artifactId>
    <version>1.0-SNAPSHOT</version>
    <build>
        <plugins>
            <plugin>
                <groupId>com.zenjava</groupId>
                <artifactId>javafx-maven-plugin</artifactId>
                <version>8.8.3</version>
                <configuration>
                    <appName>SimManager</appName>
                    <vendor>YourCompany</vendor>
                    <mainClass>SimManager</mainClass>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>8</source>
                    <target>8</target>
                </configuration>
            </plugin>
            <plugin>
                <artifactId>maven-assembly-plugin</artifactId>
                <configuration>
                    <archive>
                        <manifest>
                            <mainClass>sample.Main</mainClass>
                        </manifest>
                    </archive>
                    <descriptorRefs>
                        <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                </configuration>
            </plugin>
        </plugins>
        <resources>
            <resource>
                <directory>src/main/java/excel</directory>
                <includes>
                    <include>*.*</include>
                </includes>
            </resource>
        </resources>
    </build>
    <repositories>
        <repository>
            <id>jitpack.io</id>
            <url>https://jitpack.io</url>
        </repository>
        <repository>
            <id>jcenter</id>
            <url>https://jcenter.bintray.com/</url>
        </repository>
    </repositories>
    <dependencies>

        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-java</artifactId>
            <version>3.13.0</version>
        </dependency>




        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>3.16</version>
        </dependency>



        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>3.16</version>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.11</version>
        </dependency>

        <dependency>
            <groupId>javax.mail</groupId>
            <artifactId>mail</artifactId>
            <version>1.5.0-b01</version>
        </dependency>

        <dependency>
            <groupId>org.jfree</groupId>
            <artifactId>jfreechart</artifactId>
            <version>1.0.19</version>
        </dependency>

        <dependency>
            <groupId>org.apache.pdfbox</groupId>
            <artifactId>pdfbox-app</artifactId>
            <version>2.0.15</version>
        </dependency>

        <dependency>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
            <version>1.1.1</version>
        </dependency>

        <dependency>
            <groupId>com.liferay</groupId>
            <artifactId>com.liferay.document.library.service</artifactId>
            <version>1.0.1</version>
        </dependency>


        <dependency>
            <groupId>org.simplejavamail</groupId>
            <artifactId>simple-java-mail</artifactId>
            <version>5.0.8</version>
        </dependency>

        <dependency>
            <groupId>org.testng</groupId>
            <artifactId>testng</artifactId>
            <version>6.8</version>
        </dependency>

        <dependency>
            <groupId>org.quartz-scheduler</groupId>
            <artifactId>quartz</artifactId>
            <version>2.2.1</version>
        </dependency>
        <dependency>
            <groupId>org.quartz-scheduler</groupId>

            <artifactId>quartz-jobs</artifactId>
            <version>2.2.1</version>
        </dependency>

        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
            <version>2.8.5</version>
        </dependency>
        <dependency>
            <groupId>com.googlecode.json-simple</groupId>
            <artifactId>json-simple</artifactId>
            <version>1.1</version>
        </dependency>
        <dependency>
            <groupId>org.json</groupId>
            <artifactId>json</artifactId>
            <version>20090211</version>
        </dependency>

        <dependency>
            <groupId>io.github.bonigarcia</groupId>
            <artifactId>webdrivermanager</artifactId>
            <version>3.1.1</version>
            <scope>compile</scope>
        </dependency>


        <!--<dependency>
            <groupId>com.github.Lamba92</groupId>
            <artifactId>kresourceloader</artifactId>
        </dependency>-->

        <dependency>
            <groupId>com.lynden</groupId>
            <artifactId>GMapsFX</artifactId>
            <version>2.10.0</version>
        </dependency>

        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>jcl-over-slf4j</artifactId>
            <version>1.7.6</version>
        </dependency>




        <dependency>
            <groupId>org.bouncycastle</groupId>
            <artifactId>bcprov-jdk15</artifactId>
            <version>1.44</version>
        </dependency>

        <dependency>
            <groupId>com.ibm.icu</groupId>
            <artifactId>icu4j</artifactId>
            <version>3.8</version>
        </dependency>
        <dependency>
            <groupId>com.itextpdf</groupId>
            <artifactId>itextpdf</artifactId>
            <version>5.5.13</version>
            <scope>compile</scope>
        </dependency>


    </dependencies>

</project>

библиотеки структур проекта Библиотека

Ответы [ 2 ]

0 голосов
/ 29 мая 2019

Я мог бы решить это! Я только что проанализировал .jar с помощью команды:

jar tvf WAsNEWWINDOWS.jar

и я понимаю, что действительно, необходимого класса там не было. Поскольку я уже видел библиотеки в структуре проекта в IntelliJ, я посмотрел на извлеченные артефакты и увидел, что iText там не было, поэтому я добавил его в качестве «извлеченного каталога» и искал, где находится iText .jar, и это Это! , Снова скомпилируйте банку, и ошибки не было, и она отлично работает! Я оставляю изображение, где вам нужно добавить .jar:

каталог извлечения intellij

0 голосов
/ 23 мая 2019

Это исключение выглядит так, как будто у вас нет правильной зависимости в вашем хранилище maven. Попробуйте проверить, имеют ли обе функции PdfReader одинаковую зависимость. Как вы сказали, вы пробовали так много библиотек, может быть, две из них имеют одинаковую функцию имени, и вы каким-то образом смешали их.

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