jar化した際に画像が表示されない問題と画像が存在しないのにエラーが出ない理由

このQ&Aのポイント
  • jar化すると、eclipse上では正常に表示されていたタスクバーのアイコンが表示されなくなる問題が発生しています。jarファイルの中にアイコン用の画像ファイルが含まれていないためです。
  • プログラム中では、画像の取得にURLを使用しており、画像が存在しない場合でもエラーを出さずに動作しています。
回答を見る
  • ベストアンサー

jar化すると画像が消える

お世話になります。 環境 OS:Windows7 IDE:eclipse galileo 1.2.2.20100216-1730 タスクトレイにアイコンを表示するプログラムを作成しています。 eclipse上での動作においては何の不備も見あたらず、特に問題なく動作します。 しかし、エクスポートでxxxx.jarにして動かすと、eclipseではきちんと表示されていたタスクバーのアイコンが、表示されなくなってしまいました(プログラムそのものは動いており、アイコンの表示されない真っ白な状態でタスクバーに常駐しています)。 jarの中身を解凍してみると、アイコン用の画像ファイルが入っていませんでした。 プログラムにおける、画像の取得に関しては下記のようにしております。 URL url = getClass().getResource("xxxxx.png"); Image readImage = Toolkit.getDefaultToolkit().getImage(url); TrayIcon icon = new TrayIcon(readImage, "xxxxx", popup); 質問の内容と致しましては 1.画像がjarに入らない原因(一緒にエクスポートされない原因) および 2.取得する画像が無いのに、なぜエラーを出さずに動作するのか です。

この投稿のマルチメディアは削除されているためご覧いただけません。
  • Java
  • 回答数1
  • ありがとう数5

質問者が選んだベストアンサー

  • ベストアンサー
  • askaaska
  • ベストアンサー率35% (1455/4149)
回答No.1

回答1) 含めていないから。 エクスポートするリソースに 画像が含まれていないだけじゃないかしら? 含んでいるのに起きるというならEclipseの障害かもね。 回答2) 現段階では そういう実装になっているから としか言いようにないわ。 画像がない状態でEclipse上で動かしてみてはどうかしら?

sasa0401
質問者

お礼

お礼が遅れてしまい申し訳ありません。 ご回答、有り難うございます。 ”そういう実装になっているから” まさにその通りでした。コードを見直したところ、不備が見つかり 修正したところ、何とか思い通りの結果を得る事が出来ました。 画像に関しても、どうやらパスが問題だったようです。 無事解決することができました。 お騒がせ致しました。

関連するQ&A

  • javaでJARファイルにしたときの動作がうまくいきません。

    javaでJARファイルにしたときの動作がうまくいきません。 javaで画像を加工し表示するプログラムを作っています。OSはWindowsXP、統合開発環境はeclipseです。 eclipseで実行するときは動作するのですが、それをエクスポートしJARファイルにしたときにうまくいきません。 具体的に言いますと、エラーはでずにウィンドウはでます。そこで画像の読み込みをするのですが 少ない枚数を読み込む場合であれば動作しますが、多い枚数を読み込む場合止まります。 自分で考えたのは、eclipseで実行するときに画像を加工するため多くの配列を使うのでVM引数に-Xmx512mを入れています。 JARにして、ダブルクリックで起動したときはこの-Xmx512mを入れる事ができないのが問題かなと 考えています。 最終的には手軽に使えるプログラムを目指しておりますので、どうしてもダブルクリックで起動できる プログラムにしたいと思っています。 質問に至らない点があれば申し訳ないです。 宜しくお願いします。

    • ベストアンサー
    • Java
  • jarファイルの起動方法

    クラスファイルと画像をjarファイルに固めてクリックで起動したいのですができません。正確に言うと、最初の2~3回はできていたのですが、何回かプログラムを修正せいているうちにjarに固めてクリックしても起動しなくなりました。  マニフェストファイルは、 Main-Class: MainWindow(この後改行) です。 jarファイルへの固め方は、testフォルダにclassファイルと画像ファイルがあるものとして、 cd C:\test C:\j2sdk1.4.2_05\bin\jar cf kakei.jar *.class *.PNG C:\j2sdk1.4.2_05\bin\jar ufm kakei.jar manifest.txt です。 プログラム内の画像のロード方法は、 MediaTracker tracker=null; Image images=null; try{ tracker=new MediaTracker(this);//画像の取り込み tk=Toolkit.getDefaultToolkit(); URL img=getClass().getResource("img1.PNG"); images=tk.createImage(img); tracker.addImage(images,0,93,28); } catch(Excetption e){} 最初の2~3回はこの方法できちんと実行できました。また、ほかのアプリケーションもこの方法でやっていましたがうまくいきます。画面にまったく表示されませんが実行後にjarファイルを削除できないので おそらく実行はされているのだと思います。 どうぞよろしくお願いいたします。

    • ベストアンサー
    • Java
  • Javaの実行可能圧縮ファイル、*.jarアイコンに画像を付ける。

    Javaの実行可能圧縮ファイル、*.jarアイコンに画像を付ける。 eclipse3.5で実行可能jarをエクスポートして作成しています。 *.jarアイコンに画像を設定する方法を知りたいです。 ご存知の方がおられましたら教えてください。 よろしくお願いいたします。

    • ベストアンサー
    • Java
  • JARファイル内でのファイルの作成

    JARファイル内に格納されたクラスファイル(MainWindow.class)を実行して、同じJARファイル内にバイナリファイル(DataFile.bin)を作成したいのですがどのようにしたらよいでしょうか。  JARファイル内のクラスファイル(MainWindow.class)に記述された、randomAccessFile(string,"rw")命令によって、MainWindow.classが格納されているのと同じJARファイル内にDataFile.binを新規作成したいと思っています。  ちなみに、作成したファイルは、 URL url=null; url=getClass.getResource("DataFile.bin")で呼び出したいと思っています。  インターネット等で検索しているのですが、なかなか見つからなくて困っています。すみませんがどうかよろしくお願いします。

    • ベストアンサー
    • Java
  • Eclipseを用いたJARファイル作成について

    Eclipseを用いてjavaのプログラムをしているのですが アプレットのプログラム"のみ"がJARファイルにエクスポートできずに困っております。 [プロジェクト]を右クリック→[エクスポート]→[JARファイル]に設定するところまでは良いのですが 「JARマニフェスト仕様」というページの、「アプリケーションのエントリー・ポイントのクラスを指定」という項目で、メインクラスを参照しても アプレットのプログラムのクラス"のみ"が表示されていないのでエクスポートできません。コンソールのプログラムのクラスは表示されているので おそらく、アプレットにはmainメソッドを用いていないので表示されないのだと思うのですが・・・。 mainメソッドがないプログラムの場合はどうすれば良いのでしょうか・・・? 自分なりに、↓など調べてみたのですがどこがいけないのかわかりません。 http://mailsrv.nara-edu.ac.jp/~asait/java/applet/applet.htm http://sunjava.seesaa.net/article/57546363.html どこをどうすればこの場合、EclipseでJARファイルが作成できるのか、詳しく教えていただければ助かります。 一応、アプレットは↓の簡単なプログラムを試してみました。実行は出来ます。 import java.applet.Applet; import java.awt.Graphics; public class Sample extends Applet { public void paint(Graphics g) { g.drawString("こんにちは",10,10); } }

  • JARが起動できない

    Pleiades All in One 4.3.2のWindowBuilderを使って画面の作成をしています。 Eclipseからの実行では、画面が表示されますが、エクスポートから実行可能なJARファイルを 作成した場合、JARをダブルクリックしても起動できませんでした。 なにか特別な設定が必要なのでしょうか。 よろしくお願いします。

  • eclipseでjarファイル内のリソースファイルをうまく扱うには?

    こんにちわ。 私は今、windows XP + eclipse 3.1.1(日本語化済) でswingアプリケーションを作っています。 完成後は、実行可能jarファイルとして配布したいと考えています。 jarファイル内の画像ファイルを読み込んで、トグルボタンの アイコンに使いたいので、メインクラス内で、 jToggleButton1.setIcon(new ImageIcon(getClass().getClassLoader().getResource("images/transition.jpg"))); という記述をしました。 「ファイル」→「エクスポート」→「jarファイル」 で、実行可能jarファイルを作ったときはちゃんと 画像が読み取れているのですが、 eclipseから直接実行をすると、以下のようなNullPointerException が発生してしまいます。 java.lang.NullPointerException at javax.swing.ImageIcon.<init>(Unknown Source) at DTT.getJToggleButton1(DTT.java:261) at DTT.getJPanel5(DTT.java:216) at DTT.getJScrollPane(DTT.java:203) at DTT.getJPanel(DTT.java:99) at DTT.initialize(DTT.java:478) at DTT.<init>(DTT.java:468) at DTT.main(DTT.java:458) (DTTという名前のアプリケーションなのです。。) jarに出力する場合と、eclipseから直接実行する場合で 記述を変える必要があるのでしょうか? それともデフォルト作業ディレクトリの指定などを適切に行えば 統一的に扱えるようになるのでしょうか? なにとぞよろしくお願いします。

    • ベストアンサー
    • Java
  • jarファイルが入力ファイルを読み取ってくれません

    現在java勉強中の初心者です。 eclipseを使っているのですが現在ある数値データ(.txtファイル)を読み込み計算する プログラムを作成しています。 eclipseから実行する分には正しく動作するのですがeclipseを使ってjarファイルを生成し ダブルクリックで実行したところテキストファイルが読み取れてないようなのです。 ちなみにjarファイルと同じディレクトリに読み込みたいテキストファイルを置いて ダブルクリックで実行すると正しく動作しました。 これについてjarファイルだけでもうまく動作させる方法を知っている方は 教えてください! それともうひとつ質問ですがeclipseの場合、読み込ませたいテキストファイルは プロジェクト直下に置いているんですがこれでいいんでしょうか? ソースやclassファイルと同じ場所に置くと読み取ってないようです。

  • Jarファイル内のクラスパスについて

    Jarファイルをダブルクリックするだけで動作するプログラムを作成しており、 プログラムを起動するとException in thread "main" java.lang.NoClassDefFoundErrorが発生します。 プログラムでやろうとしていることは以下のとおりです。 (1)1つのJarファイルだけで動作する (2)他の人が作ったJarファイル(ライブラリ)を使用する   ⇒そのため、JarにJarを取り込んでいる(EclipseのRunnableJar作成機能を利用) (3)プログラムは親プロセス、子プロセス用の2つのmainクラスを持ち、   親プロセス実行後に、子プロセスをProcessBuilderで生成する (4)子プロセスでライブラリを使用して色々やる どうやら、子プロセスがライブラリを呼び出した時点でNoClassDefFoundErrorが発生するようです。 どのようにしたら、子プロセスがJar内のJarを参照することが出来るようになるのでしょうか? 知恵を貸してください。よろしくお願いします。

    • ベストアンサー
    • Java
  • Eclipseで、配布可能なJARファイルを作成する方法が解りません。

    Eclipseで、何も無いウインドウを開くというだけのアプリケーションを作ろうとしました。 ライブラリに、 org.eclipse.swt.win32.win32.x86_3.2.1.v3235.jar を追加しております。 配布できる形式にしたいため、Jarファイルを作成しました。 プロジェクトにMETA-INFというフォルダを作成し、そこに「Manifest.mf」というファイルを作成し、以下のように記述しました。 Manifest-Version: 1.0 Class-Path: "C:\eclipse\plugins\org.eclipse.swt.win32.win32.x86_3.2.1.v3235.jar" Main-Class: view.TestWindow ちなみに、「view.TestWindow」というのがmainメソッドのあるクラスの名前です。 JARファイルをエクスポートして、コマンドライン上から以下のように入力しました。 > java -jar TestWindow.jar 結果は、以下のようなエラーが表示されました。 Failed to load Main-Class manifest attribute from TestWindow.jar 多分、「Main-Class」の情報がマニフェストファイルから見つからないと言っているんだと思いますが、Eclipse上からエクスポートする際にはちゃんと場所を指定しています。何が問題なのか解りません。 将来的には、違うマシン上で動作するアプリケーションを作りたいと思っているのですが、最初でいきなり躓いてしまいました。 どなたか教えて頂けないでしょうか。

    • ベストアンサー
    • Java

専門家に質問してみよう