質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

PDF

PDF(Portable Document Format)とはISOによって国際標準として制定されている電子ドキュメント用の拡張子です。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Q&A

解決済

1回答

6296閲覧

【Java Eclipse】pdfBoxによる取得が上手くいかない

kuritake

総合スコア14

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

PDF

PDF(Portable Document Format)とはISOによって国際標準として制定されている電子ドキュメント用の拡張子です。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

0グッド

0クリップ

投稿2020/08/19 05:10

お世話になります。

現在Eclipse上でJavaプログラムを作成しております。
やりたいことはJavaライブラリであるApache PDFBoxを使用して、抽出したpdf文字列を取得したいです。

Eclipseは C:\pleiades\eclipse に配置しています。

以下、コードになります。

java

1package pdfextractpj; 2 3import java.io.File; 4import java.io.IOException; 5 6import org.apache.pdfbox.pdmodel.PDDocument; 7 8//fileName:PDFBoxSample.java 9public class PDFBoxSample { 10 11 public static final void main(String[] args) throws IOException { 12 13 File file = new File("sample.pdf"); 14 15 PDDocument document = PDDocument.load(file); 16 System.out.println("総ページ数:" + document.getNumberOfPages()); 17 } 18} 19

Eclipseでjarファイルを使用するためには、クラスパスを設定する必要があると分かったため、作成したプロジェクトに対し
【ビルド・パス→ビルド・パスの構成→ライブラリー】
を選択し、クラスパスの該当箇所に
【外部JARの追加→C:\pleiades\eclipse\programs\pdfextractpj\jar\pdfbox-2.0.20.jarを選択】
として、ライブラリタブのクラスパスにpdfboxを追加しています。

ちなみに今回作成したpjのディレクトリは
【C:\pleiades\eclipse\programs\pdfextractpj】
であり、起動を試みようとしているjavaファイルは
【C:\pleiades\eclipse\programs\pdfextractpj\src\pdfextractpj\PDFBoxSample.java】
です。対象のpdfについては
【C:\pleiades\eclipse\programs\pdfextractpj\src\pdfextractpj\sample.pdf】
に置いております。

実行時のエラーは以下の通りです。

error

1Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory 2 at org.apache.pdfbox.pdmodel.PDDocument.<clinit>(PDDocument.java:98) 3 at pdfextractpj.PDFBoxSample.main(PDFBoxSample.java:15) 4Caused by: java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory 5 at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581) 6 at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178) 7 at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522) 8 ... 2 more

import文でエラーが起こっていないため、ライブラリの読み込み自体は行われているとは思います。
デバッグを行い変数documentに値が入っていないため起きているエラーかな。という推測はしたのですが、それ以上先に進むことができていません。
大変恐縮ではございますが、ご教示の程よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

PDFBoxの中で、別のライブラリであるApache Commons Loggingを使っているけど、
クラスパスが通ってないから起きているんだと思います。

mavenやgradleを使っているなら、依存先にApache Commons Loggingを追加しましょう。

使っていなくて、自分の手元にApache Commons Loggingのjarファイルがあるのであれば、
それをPDFBoxのjarと同様にクラスパスに通しましょう。

jarファイルがなければ、以下からダウンロードしてきたものを、PDFBoxのjarと同じところに置いてクラスパスを通せばいいと思います。
Download Apache Commons Logging

投稿2020/08/19 05:50

root_jp

総合スコア4666

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kuritake

2020/08/19 07:49

動きました! 早急なご回答をいただき、ありがとうございます。 この後、commons-logging-1.2.jarをクラスパスに入れたところ、ページ数の取得ができました。 本番であるテキスト読み込み時に再度エラーが発生しましたが、質問事例と同様にNoClassDefFoundErrorによるものだったため、足りなかった「fontbox-2.0.20.jar」をクラスパスに追加して無事解決いたしました。 わざわざDL先のリンクまでご提供いただき、非常に助かりました。 どうもありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問