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

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

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

JAR(又はJava ARchive)はコンパイルされた複数のJavaバイトコード及び関連ファイルのリソースを一つのファイルに統合したものです。JARファイルはZIPファイルのフォーマットで構築されています。

Java

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

Q&A

解決済

1回答

6020閲覧

jarファイルを実行できない。

otftrough

総合スコア476

JAR

JAR(又はJava ARchive)はコンパイルされた複数のJavaバイトコード及び関連ファイルのリソースを一つのファイルに統合したものです。JARファイルはZIPファイルのフォーマットで構築されています。

Java

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

0グッド

0クリップ

投稿2015/11/10 00:03

編集2015/11/10 04:18

jarファイルを作りましたが、ダブルクリックで実行できません。
作った手順は、
javaファイルをつくる、書く。
コンパイルする
コマンドプロンプトでテストする
マニフェストファイルをつくる、書く。
コマンドプロンプトでjarファイルをつくる。

で、コンパイルは成功、テストも問題なく実行でき、動きました。
マニフェストファイル.mfの中身は、
Main-Class :makeHTML
(改行一回)
です。今までもこのやり方でできていて、今回のことの原因が全くわかりません。
ちなみに、mainメソッドでargs[]を使わないので、引数忘れでもありませんし、必要なファイルも全て入れてあるので、NullPointerExceptionでもないはずです。
URLの先からjarファイルをダウンロードできるので、よければダウンロードして確かめていただけますか?必要ファイルはjarにまとめていれてあります。
*URL更新11/10 13:18
http://fast-uploader.com

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

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

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

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

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

guest

回答1

0

ベストアンサー

こういう場合はまず、コマンドプロンプトで実行してみましょう。

ダウンロードしたJarファイルを実行してみたところ、以下のエラーになり起動に失敗しました。

>java -jar makeHTML.jar Exception in thread "main" java.lang.NullPointerException at javax.swing.ImageIcon.<init>(Unknown Source) at makeHTML.<init>(makeHTML.java:35) at makeHTML.main(makeHTML.java:12)

アイコンの読み込みに失敗しているみたいですね。
いったんアイコンの処理をコメントアウトしてビルドし直して再度試してみてください。

投稿2015/11/10 00:18

argius

総合スコア9388

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

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

otftrough

2015/11/10 03:10 編集

ありがとうございます。 アイコンの処理の場所を変えてみると、mainメソッドのみ動作しました。 次は、エラーが Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: URI is not hierarchicalになり、調べてみたところ、 BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(startFile), "UTF-8")); がおかしかったようです。 File startFile = new File(new URI(this.getClass().getResource("start.otft").toString()));で、 FileInputStream()もFileを受け取れるので、問題ないと思うのですが、URIがなんとかかんとかってエラーで言ってるので、よくわかりません。
argius

2015/11/10 02:27

> エラーメッセージに12行目のことも書いてありますが、 > trueを引数で渡すのも良くないのでしょうか? 上記のようなエラーは、スタックトレースと呼ばれるもので、メソッドの呼び出し階層になっています。下から順にメソッドが呼び出され、一番上の処理の行で例外が発生していることを意味しています。 なので、new makeHTML(true)自体には特に問題はありません。 アイコンの処理をコメントアウトすると、今度はcallFileクラスでエラーになりますね。 callFileクラスはソースコードが無いので何が起きているのか分かりません。
otftrough

2015/11/10 03:12

すみません、12行目については自己解決したのでコメントを書き直していました。
argius

2015/11/10 03:18

URIのメッセージの件です。 getResourceで取得したリソースは、Fileとして扱うことはできません。 getResourceAsStreamでInputStreamを取得して、それをInputStreamReaderに渡すようにしてください。
otftrough

2015/11/10 04:14

すみません、言い忘れました。 start.otftなどはjarファイルに入れて使います。 new BufferedReader(new InputStreamReader(new FileInputStream(this.getClass().getResourceAsStream("start.otft")), "UTF-8"));では、コンパイルエラーなりました。FileInputStream()にはInputStreamを渡せないそうです。toString()をつけてもダメでした。 解釈が間違っていましたでしょうか?
argius

2015/11/10 04:24

FileInputStreamの代わりに、this.getClass().getResourceAsStream("start.otft")を指定してください。 つまり、こう↓です。 new BufferedReader(new InputStreamReader(this.getClass().getResourceAsStream("start.otft"), "UTF-8"))
otftrough

2015/11/10 07:34

なるほど、全くわかりません。 どうすれば、ストリームという概念を理解できるんでしょうか・・・ とりあえず、ちゃんと目的の動作はしました。ありがとうございました。
argius

2015/11/10 07:50

そうですね、Javaのストリーム関連クラスをおぼえるのは少し大変かもしれません。 今回の例では、FileInputStreamもgetResourceAsStreamが返すInputStreamも、同じように扱えるということです。互換性があるクラスなんです。ここだけ理解していただければ良いと思います。
argius

2015/11/11 03:02 編集

この質問が終了でしたら、自己回答でも良いので解決済みにしていただけると幸いです。
otftrough

2015/11/13 05:12

忘れてましたw
argius

2015/11/13 05:13

いえいえ、ご対応いただきありがとうございました。 催促したようで恐縮です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問