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

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

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

JavaFXとは、Java仮想マシン上で動作するリッチインターネットアプリケーション (RIA) のGUIライブラリです。Swingとは異なり、FXMLと呼ばれる XMLとCSSを併用してデザインを記述します。

NetBeans

NetBeansは Java、HTML5、PHP、C/C++のアプリケーションのフレームワーク、もしくは統合開発環境(NetBeans IDE)の両方を指します

Java

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

Apache Maven

Apache Mavenは、ソフトウェアプロジェクトの管理ツールです。

Q&A

解決済

2回答

2776閲覧

NetBeans+Mavenで実行時にローカルライブラリ(jar)が見つからない

XCUBE

総合スコア101

JavaFX

JavaFXとは、Java仮想マシン上で動作するリッチインターネットアプリケーション (RIA) のGUIライブラリです。Swingとは異なり、FXMLと呼ばれる XMLとCSSを併用してデザインを記述します。

NetBeans

NetBeansは Java、HTML5、PHP、C/C++のアプリケーションのフレームワーク、もしくは統合開発環境(NetBeans IDE)の両方を指します

Java

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

Apache Maven

Apache Mavenは、ソフトウェアプロジェクトの管理ツールです。

0グッド

0クリップ

投稿2021/02/19 08:18

編集2021/02/19 09:30

NetBeansでJavaFXプロジェクトをAntからMavenプロジェクトに移植しています。
NetBeansは12.2でMavenプロジェクトを作成する際にJavaFX用のプロジェクトではなく一番上にあるJavaアプリケーションで作成しました。
ビルドで使用するJDKは11.0.9です。

Java8で作成した自作のjarやリポジトリにないライブラリをpom.xmlに記述しています。

xml

1<dependency> 2 <groupId>fixed.local.jar</groupId> 3 <artifactId>iText</artifactId> 4 <version>2.1.7</version> 5 <scope>system</scope> 6 <optional>true</optional> 7 <systemPath>${basedir}/lib/iText-2.1.7.jar</systemPath> 8</dependency>

これにより下記のコードはビルドできるのですが

java

1 public void start(Stage stage) { 2 Pane root = null; 3 com.lowagie.text.Document doc = new com.lowagie.text.Document(com.lowagie.text.PageSize.A4, 50, 50, 50, 50);

実行するとClassNotFoundExceptionとなり、起動停止してしまいます。

text

1java.lang.reflect.InvocationTargetException 2 at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 3 at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 4 at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 5 at java.base/java.lang.reflect.Method.invoke(Method.java:566) 6 at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:464) 7 at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:363) 8 at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 9 at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 10 at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 11 at java.base/java.lang.reflect.Method.invoke(Method.java:566) 12 at java.base/sun.launcher.LauncherHelper$FXHelper.main(LauncherHelper.java:1051) 13Caused by: java.lang.RuntimeException: Exception in Application start method 14 at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:900) 15 at javafx.graphics/com.sun.javafx.application.LauncherImpl.lambda$launchApplication$2(LauncherImpl.java:195) 16 at java.base/java.lang.Thread.run(Thread.java:834) 17Caused by: java.lang.NoClassDefFoundError: com/lowagie/text/Document 18 at Main.start(Main.java:35) 19 at javafx.graphics/com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$9(LauncherImpl.java:846) 20 at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runAndWait$12(PlatformImpl.java:455) 21 at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$10(PlatformImpl.java:428) 22 at java.base/java.security.AccessController.doPrivileged(Native Method) 23 at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$11(PlatformImpl.java:427) 24 at javafx.graphics/com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:96) 25 at javafx.graphics/com.sun.glass.ui.win.WinApplication._runLoop(Native Method) 26 at javafx.graphics/com.sun.glass.ui.win.WinApplication.lambda$runLoop$3(WinApplication.java:174) 27 ... 1 more 28Caused by: java.lang.ClassNotFoundException: com.lowagie.text.Document 29 at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581) 30 at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178) 31 at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521) 32 ... 10 more

pom.xmlやプロジェクトの設定に何か足りないものがあるのかも知れないといろいろ調べたのですが、答えを見いだせないでいます。
アドバイスを頂戴したいのですが、よろしくお願いします。

<環境>
Windows10 Pro 1909
NetBeans12.2 64bit
JDK11.0.9

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

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

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

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

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

guest

回答2

0

自己解決

Mavenに対する知識不足もあり、assembly pluginで実行jarを作っていたんですが、リポジトリより取得したライブラリは問題なく組み込まれるものの、今回のような<systemPath>で示したリポジトリ外のライブラリが吸収されなかったというところが原因でした。
そこでいろいろ調べた結果、mvn installコマンドでローカルリポジトリに登録することで一旦解決したのですが、それでは自作のライブラリを更新するたびにローカルリポジトリを更新しなければならないのが不便だったので、何か方法はないかと調べたところspring boot pluginを使うことでその課題も解決できました。

結果的にLuiceさんのおっしゃっていたFat jarになっていないというところが問題だったのですが、リポジトリ外のローカルJarを指定できるのに、それがFat Jarに含まれないのかというところに躓いていました。
それが使用するプラグインによってできたりできなかったりということで、使用しているプラグインを示していればもっとよい回答がいただけたのかなと思いました。
Luiceさんありがとうございました。

投稿2021/03/08 00:18

編集2021/03/08 05:40
XCUBE

総合スコア101

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

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

0

実行時にNoClassDefFoundErrorが出ているのはわかりますが、
どのように実行したか全く記載されていないので回答し辛いです。

一般的に実行時にclasspathを設定していないか、
fat jarだと思ってたらthin jarを作っていたとか、
その辺りが怪しそうです。

投稿2021/02/21 23:33

Luice

総合スコア766

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

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

XCUBE

2021/02/22 05:41

ご回答ありがとうございます。 実行方法はNetBenasを立ち上げて作成したプロジェクトに対して実行コマンドを実施するだけです。 普通に考えたら確かにclasspathを設定していないことが第一に考えられると思いますが、Mavenプロジェクトはそのあたり自動的にやってくれるものと思っています。 何か不備があってそこのところがうまくいっていないのかなあと思っているんですが。。。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問