人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

JavaのプログラムをEclipseから実行した場合とExecutableJarにして実行した場合の挙動の違いについて質問です。Eclipse側ではビルドパスに、ExecutableJar側ではMANIFEST.MFのClass-Pathに、同一の外部Jarファイルへの参照が記述してあります。しかしExecutableJarを実行した場合のみ、Jythonスクリプト中からその外部Jarファイル内のクラスをインポートする部分でエラーを起こします。なおどちらの場合でも、Javaコード中でのインポートは正常に行われています。いったい何が原因でこんな現象が起こるのだと思いますか?

●質問者: westfish
●カテゴリ:コンピュータ
✍キーワード:Class eclipse JAR Java Jython
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● b-wind
●35ポイント

Eclipse で実行する際に別 VM で起動する設定にしない場合 Eclipse 本体と同じ環境で実行されます。

Eclipse 本体に含まれる Jar ファイルを使用してコンパイルされ、バージョンの不一致によるエラーが発生しているのではないかと思いますが、エラーの詳細が分からないので推測になります。

◎質問者からの返答

あまり参考にならないかも知れませんが一応エラーの詳細を載せます。

from org.eclipse.swt import SWT

というコードの部分で

ImportError: No module named eclipse

というエラーを起こしています。

Eclipseが使っているJREは1.5.0_05で、ExecutableJarを実行するときに使っているJREは1.5.0_07でした。試しに1.5.0_05のjava.exeを指定して起動してみましたが、結果は変わりませんでした。


2 ● b-wind
●35ポイント

SWT のランタイムがロードできていないように見えます。

実行環境に対応したランタイムにパスは通していますか?

http://www13.plala.or.jp/observe/swt/swt_overview.html#launch

◎質問者からの返答

はい。なぜならJavaコード側でもorg.eclipse.swtを利用しており、それは問題なく動いているからです。現在は対症療法としてJython側でインポートをせず、Java側からJython側の名前空間に"SWT"という名前でSWT.classをセットして使っています。これで問題なく動くのでクラスパスなどの問題ではないと考えられます。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ