- PR -

JavaのJarファイルの実行でのエラー

1
投稿者投稿内容
ビギナー
会議室デビュー日: 2004/09/29
投稿数: 10
投稿日時: 2004-09-29 09:54
java初心者です。 以下のエラーの対処策を教えてください。

jarファイルの中身は次の通りです。
C:\tmp\java_jar>jar tf SendMst
META-INF/MANIFEST.MF
LogLib.class
SerialConnection.class
SendProc.class
SendMst.class
IniLib.class
SerialParameters.class
SendParameters.class
OracleLib.class
ComFunc.class

実行時のエラー内容は次の通りです。
C:\tmp\java_jar>java -jar SendMst.jar SendMst.ini
Exception in thread "main" java.lang.NoSuchMethodError
at IniLib.getIni(IniLib.java:237)
at SendMst.main(SendMst.java:39)
すなわち、IniLibのクラスが参照できないようです。
ちなみに、プログラムはEclipseで作成しました。
Eclipse上では正常に動作しています。
また、jarファイルはEclipseのエキスポート機能で作成しました。
よろしくお願いいたします。
たーぞう
ぬし
会議室デビュー日: 2003/08/08
投稿数: 317
お住まい・勤務地: お花畑
投稿日時: 2004-09-29 12:49
引用:

ビギナーさんの書き込み (2004-09-29 09:54) より:
Exception in thread "main" java.lang.NoSuchMethodError
at IniLib.getIni(IniLib.java:237)
at SendMst.main(SendMst.java:39)
すなわち、IniLibのクラスが参照できないようです。


と言うよりは、IniLibクラスのgetIniメソッドでエラーが発生しているようですが。
IniLibのソースを開示されると原因が見つかるかも知れませんね。
ビギナー
会議室デビュー日: 2004/09/29
投稿数: 10
投稿日時: 2004-09-29 13:26
引用:
--------------------------------------------------------------------------------
たーぞう様の書き込み (2004-09-29 12:49) より:
と言うよりは、IniLibクラスのgetIniメソッドでエラーが発生しているようですが。
IniLibのソースを開示されると原因が見つかるかも知れませんね。
--------------------------------------------------------------------------------

たーぞう様 早速、返信有難うございます。
ご指摘のように関連しているソース部分をコメントにしたところ
エラーは無くなりました。

その部分は、
String iniBuf = cf.getPrivateProfileString("Common", "PrevTime", iniFile);
if (iniBuf.equals("") == false) {
String dum[] = iniBuf.split(",");
iVal = Integer.parseInt(dum[0]);
} else {
iVal = 0;
}

となっています。実行時には iniBufは「62, TRUE] という文字列が返ります。
split がまずいのでしょうか?
特にimport文も記述していないのですが???

ご面倒ですが、教えていただければ幸いです。
たーぞう
ぬし
会議室デビュー日: 2003/08/08
投稿数: 317
お住まい・勤務地: お花畑
投稿日時: 2004-09-29 14:16
引用:

ビギナーさんの書き込み (2004-09-29 13:26) より:
String iniBuf = cf.getPrivateProfileString("Common", "PrevTime", iniFile);


ここが怪しそうですが、cfのクラス定義はどのように記述されていますか?
また、ひょっとして「GetPrivateProfileString」が正しいのでは?(^^;
ビギナー
会議室デビュー日: 2004/09/29
投稿数: 10
投稿日時: 2004-09-29 14:35
たーぞう様 ビギナーです。

getPrivateProfileString はjarファイル中のComFuncクラスで定義しており、
これ自体は問題ありませんでした。
問題はやはり、「split](JDK 1.4以降)で Eclipseでの作業はJDK1.4で行っていましたが、
テストした環境のJDKは1.3.1のため、エラーになっていたようです。

お騒がせしました。 これからもよろしくお願いいたします。
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2004-09-30 01:58
もう解決したみたいですが、java.lang.NoSuchMethodError は呼び出そうとしたメソッドの定義が存在しないことを示します。
おそらく根本的な原因はクラス毎にコンパイルのタイミングがことなってインターフェースが古いままになっていたからではないでしょうか。この場合は全部まとめてコンパイルしてやれば Ok です。
コンパイル環境、実行環境の差異は関係ないと思います。
たーぞう
ぬし
会議室デビュー日: 2003/08/08
投稿数: 317
お住まい・勤務地: お花畑
投稿日時: 2004-09-30 10:12
引用:

インギさんの書き込み (2004-09-30 01:58) より:
コンパイル環境、実行環境の差異は関係ないと思います。


Stringクラスにsplitメソッドが実装されたのは1.4からのようなので、ビギナーさんのご意見が正しいようです。
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2004-09-30 13:00
あ、ほんとですね。思い込みで誤ったことを書き込んでしまいました。
混乱させてしまっていたらごめんなさい。m(. .)m
1

スキルアップ/キャリアアップ(JOB@IT)