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

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

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

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

Java

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

Eclipse

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

Q&A

解決済

3回答

15406閲覧

jarファイルが実行できません

mike2mike4

総合スコア935

JavaFX

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

Java

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

Eclipse

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

0グッド

0クリップ

投稿2017/03/09 03:00

いつもお世話になっております。Eclipseで作成したJavaFxのプログラムをWindows10とLinux(CentOS7)で実行したいのですが、実行できません。Eclipse上では正常に実行できます。「実行可能なJarファイル」としてエクスポートしました。
1)Windows10ではダブルクリックで実行できません。コマンドプロンプトでは実行できます。プログラムの関連づけはされています。「Java(TM) Platfome SE binary」に関連づけされています。

CentOS7で実行できません。Java8SE JDKはインストールしました。
2)GUIの方ですが、まず関連づけしようにもプロパティの一覧に出てきません。windowsのように直接パスを指定する事は出来ないんでしょうか?

3)Linuxのコンソールから実行できません。java -jar Atest.jar と打ったら、

[ryou@localhost デスクトップ]$ java -jar Atest.jar Exception in thread "main" java.lang.NoClassDefFoundError: javafx/application/Application at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:763) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) at java.net.URLClassLoader.defineClass(URLClassLoader.java:467) at java.net.URLClassLoader.access$100(URLClassLoader.java:73) at java.net.URLClassLoader$1.run(URLClassLoader.java:368) at java.net.URLClassLoader$1.run(URLClassLoader.java:362) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:361) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:348) at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:56) Caused by: java.lang.ClassNotFoundException: javafx.application.Application at java.net.URLClassLoader.findClass(URLClassLoader.java:381) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ... 14 more

と、なります。
MANIFEST.MFは

Manifest-Version: 1.0 Rsrc-Class-Path: ./ org.eclipse.fx.ide.css.jfx8_2.4.0.201605112122.jar jna.jar Class-Path: . Rsrc-Main-Class: application.Main Main-Class: org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader

Mainクラスは存在しています。確認済みです。
javafx関係のファイルもインストール済みです。ただし、「javafx」フォルダなるものはOS内、Jarファイル内どこにも存在してません。
printenvしたら以下の変数設定が含まれてます

PATH=/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/home/ryou/.local/bin:/home/ryou/bin JAVA_HOME=/usr/java/jdk1.8.0_121/bin

Eclipseのファイル構造は以下の通り
ファイル構造
Jarファイルを解凍した結果は以下の通り。META-INFフォルダにMANIFEST.MFが入ってました。
ファイル構造

Eclipseの設定からおかしいのでしょうか? それとも、マニュフェストの設定がおかしいのでしょうか?

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

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

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

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

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

guest

回答3

0

横から失礼致します。
似たような内容について質問させていだいたところ、本質問を紹介していただきここに辿り着きました。(https://teratail.com/questions/136941)
結局、CentOS上でjarファイルの実行はできましたでしょうか?もし実行できた実績があれば、対処方法をご教授願います。

【補足】
shに実行権限をつける方法ではうまくいきませんでした。

投稿2018/07/20 04:51

編集2018/07/20 04:58
tom127

総合スコア11

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

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

0

ベストアンサー

「実行可能なJarファイル」とは、CUIで「java -jar Atest.jar」として実行できる様、依存する(lib).jarを「Atest.jar」に内包するだけの物です。

「GUIで、関連づけ」して起動出来るものではありません。

Atest.jarが必要とする.xmlや、swt等が参照する「例:ボタン画像」が有れば、Atest.jarと同一階層(あるいは、Atest.jar内のソースで記述した階層)に置いてください。

対象ログの除外
の下の方で、小生が下記コメントした様に
jsmooth
を利用すれば、

出来ました。あのlaunch4jでの「わけわかめ」は何だったんだろう? ていうくらいあっさりと。 ただし、1exeではなく、jarをexe起動にするだけで、xml,(lib).jar,(jre)は同一ファイルに置いて、zipにして配布の考えの様です。

Windowsの場合、クラスmainを含んだjarをexe化すれば、exeのダブルクリックで起動出来ます。

投稿2017/04/03 22:49

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

mike2mike4

2017/04/04 11:15

回答ありがとうございます。内包するだけだとすると、マニフェストファイルはどういう意味で作成されているのでしょうか。
退会済みユーザー

退会済みユーザー

2017/04/04 22:25 編集

例えば、 https://docs.oracle.com/javase/jp/1.5.0/guide/jar/jar.html#JAR%20Manifest を参照してください。 特にこの部分の〔「java -jar x.jar」によって直接呼び出された実行可能 jar ファイル〕の記述。 『 スタンドアロンアプリケーションに対して定義する属性。 この属性は、Java ランタイムから「java -jar x.jar」によって直接呼び出された実行可能 jar ファイルに含まれる、スタンドアロンアプリケーションによって使われる Main-Class: この属性の値には、起動時に起動ツールによってロードされるメインアプリケーションのクラスの相対パスを定義する。この値には、クラス名に拡張子「.class」が付いていてはならない 』 ということで、実行コマンドは「java -jar x.jar」です。 mainクラス名を指定し無くても起動するのは、マニフェストファイルの「Main-Class:」 or 「Rsrc-Main-Class:」にmainクラスが指定されているためです。 「Class-Path:」or「Rsrc-Class-Path:」に指定が有るからと言って『実行jarをダブルクリックして起動』出来る機能は持っていません。
mike2mike4

2017/04/05 11:09

解説ありがとうございます。『実行jarをダブルクリックして起動』でググったら参考になる意見が出てきました。
退会済みユーザー

退会済みユーザー

2017/04/05 20:29

ほう! ちゃんと設定するとjarのダブルクリックで起動出来る様ですね。小生もtryしてみようと思います。 貴重な情報を有難う御座います。
退会済みユーザー

退会済みユーザー

2017/04/06 00:43

windows7では、これ以上のレジストリ削除,変更、再起動でOSが立ち上がらなくなるのが怖いのでギブアップ。 Linuxはshellで「java -jar x.jar」後「bg」をGUIと紐付ければいいのかなぁ?(推測)
退会済みユーザー

退会済みユーザー

2017/04/06 05:42 編集

Linuxは「.sh」に「java -jar x.jar」と書いて、「.sh」に実行権限つけて、GUIで「.shを実行」に設定して、「.sh」をダブルクリックしたら、Windowアプリが起動した(@@)、、、へぇ~。。。 p.s. 「.jar」を右クリックし「別アプリで開く」で「コマンドを直接指定」で「java -jar」を設定したら、「.jar」のダブルクリックで起動した、、、知らんかったぁ。。。
guest

0

当該クラスファイルが、ちゃんとexportされていないのでは?
Java Build Path >> Order and Exportのチェックを確かめてみてください。

投稿2017/04/03 05:34

RyouichiTsuji

総合スコア17

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

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

mike2mike4

2017/04/03 09:17

回答ありがとうございます。このまま闇へと葬られるのかと思ってました。 で、プロパティ >> Javaのビルドパス >> 順序およびエクスポート (日本語ですがこれでいいのでしょうか)を開いてみたところ、 全てにチェックが入ってました。 チェックを入れ直してエクスポートしてみましたが特に変化はありません。 もしかすると僕がアドバイスを理解してないのかも知れませんけど うまく行きませんでした。
RyouichiTsuji

2017/04/03 11:37

こちらが投稿した通りの事をやっておられます。(お力になれなくてすみません)
RyouichiTsuji

2017/04/03 11:42

実行ファイルのパーミッションもチェックしてみてください。
mike2mike4

2017/04/03 14:35

ありがとうございます。 Windows10では「実行」になってました。ただ、GUiでは実行できません。 Linuxではパーミションが「実行」になってなかったので、実行にしました。 ただ、GUIでは関連づけされておらず(javaがアプリケーション一覧に出てこない) CUIでは、 Graphics Device initialization failed for : es2, sw と、出て、ググってみるとGTKをインストールする必要があるらしいので、インストールしたのですがエラーは消えません。
退会済みユーザー

退会済みユーザー

2017/04/03 22:55

>Windows10ではコマンドプロンプトでは実行できます。 とのことですので、Atest.jarには問題は無い(と思われます。) ただ、Windowsでの「¥」を、Linuxでは「/」にして、jar化しないといけませんが、その当りは大丈夫でしょうか?
mike2mike4

2017/04/04 11:17

回答ありがとうございます。パスはメソッドで取得するようになっているので、コードに書いてませんでした。
退会済みユーザー

退会済みユーザー

2017/04/04 22:38 編集

一応、マニフェストファイルの「Main-Class:」 or 「Rsrc-Main-Class:」の設定を確認してみてください。詳細は、小生の回答のコメントを参照ください。 mainは起動しているので、正しいmainクラスが設定されているとは思いますが。 Exception in thread "main" java.lang.NoClassDefFoundError:は https://docs.oracle.com/cd/E26537_01/tutorial/getStarted/problems/ の「実行時の問題 Microsoft Windowsシステムでのエラー・メッセージ Exception in thread "main" java.lang.NoClassDefFoundError:」 で、何か、心当りは有りませんか?
mike2mike4

2017/04/05 11:19

コマンドプロンプトでは、 Exception in thread "main" java.lang.NoClassDefFoundErrorは出てません。GUIのダブルクリックだと一瞬コマンドプロンプトが開いて消えてしまうので確認できません。皆さんの情報で試行錯誤した結果、javaでも実行させるには色々設定しなければならない事がわかりました。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問