- PR -

Javaのクラスファイルエラー

投稿者投稿内容
version
会議室デビュー日: 2007/05/14
投稿数: 5
投稿日時: 2007-05-15 09:32
初めて書き込みをさせていただきます。
昨日一日中検討し、ググッていたのですが解決方法が見つからなかったため質問させていただきます。
未熟なため説明が下手になっていると思いますが、どうかお付き合いいただきたいと思います。

現在JSPファイルプログラムを実行した際にエラーがおきております。
実行JSP(Test_jsp)内でSample.javaを参照しています。

【エラーログ】
2007/05/14 21:04:56 org.apache.jasper.compiler.Compiler generateClass
致命的: Error compiling file: /C:/Documents and settings/sato/workspace/fkanri/work//org/apache/jsp\ac_jsp.java
[javac] Compiling 1 source file

C:\Documents and Settings\sato\workspace\fkanri\work\org\apache\jsp\ac_jsp.java:73: common.Sample にアクセスできません。
クラスファイル C:\Documents and Settings\sato\workspace\fkanri\WEB-INF\classes\common\Sample.class は不正です。
クラスファイルのバージョン 49.0 は不正です。48.0 であるべきです。
削除するか、クラスパスの正しいサブディレクトリにあるかを確認してください。
Sample sample = new Sample();
^
【環境】
eclipse:3.0.2
Java:j2sdk1.4.2_12
Tomcat:5.0.28

【コンパイル環境と実行環境】
$javac -J-version
java version "1.4.2_12"

$javac -version
java version "1.4.2_12"

【eclipseの設定】
インストール済みのJREはj2sdk1.4.2_12のみ表示され選択されている
コンパイラーのJDK準拠は全て1.4が選択されている
TomcatのVM設定はj2sdk1.4.2_12

【クラスパスの設定】
CLASSPATH
;.;%JAVA_HOME%\Lib\dt.jar;%JAVA_HOME%\Lib\tools.jar

JAVA_HOME
C:\j2sdk1.4.2_12

Path
%JAVA_HOME%\bin;

【その他】
TOMCATのインストール時に指定したJavaもj2sdk1.4.2_12です。
現在の開発環境を整える前に、違う開発環境を使用していました(eclipsev3.2、Javav1.5)。
始めにeclipsev3.0&Tomcatをインストールした際にはjavav1.5がコンパイル環境だったと思います。
eclipse上からjre、コンパイラーの準拠、TomcatのVM設定を切り替えていました。
ですがどうしても上記のエラーが出るので、Javav1.5をアンインストールし、eclipse及びTomcatをインストールしなおしました。
その際にパスも上記のように変更しました。
その上で既存のクラスファイルは全て削除した後にコンパイル(プロジェクトのクリーン)しなおしました。
その後にTomcatをeclipseから起動し、webブラウザでJSPを実行しました。
その際に上記のエラーが出てしまいました。

※先ほどさらに以下のエラーもでました
javax.servlet.ServletException: org/apache/jsp/Test_jsp (Unsupported major.minor version 49.0)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:244)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)



Javaのバージョン違いが原因のようなエラーだと思うのですが、どうしてそのようになるのがわかりません。
設定ではバージョンの違いはないように思えます。
かなり行き詰ってしまい、打つ手が思いつきませんのでどなたかお気付きの点がありましたらご指摘いただきたいと思います。
宜しくお願いします。

どせい
大ベテラン
会議室デビュー日: 2006/10/25
投稿数: 145
投稿日時: 2007-05-15 10:08
「クラスファイルのバージョン 49.0 は不正です。48.0 であるべきです」
で検索してみた。@IT内の記事がヒットした。とりあえず読んでみたら?
http://www.atmarkit.co.jp/fjava/rensai3/code_debug08/debug08.html

version
会議室デビュー日: 2007/05/14
投稿数: 5
投稿日時: 2007-05-15 10:19
>「クラスファイルのバージョン 49.0 は不正です。48.0 であるべきです」
>で検索してみた。@IT内の記事がヒットした。とりあえず読んでみたら?
>http://www.atmarkit.co.jp/fjava/rensai3/code_debug08/debug08.html

ご回答ありがとうございます。
上記記事は昨日拝見いたしました。
よって全てのクラスファイルを削除した後、現在の設定環境で再度全ファイルをコンパイルしています。
よって現在のコンパイル環境がv1.4であれば問題ないと思うのですが、v1.5でコンパイルされているようなエラーでした。
ちなみにjavacオプションで-targetや-sourceをv1.4に指定しても同様のエラーが出ました。
ですが、そのような設定になっていないようなので困っています。
他に何かお気づきの点がありましたら宜しくお願いします。
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2007-05-15 10:52
-source 1.4 -target 1.4 と指定していればクラスバージョン 48 のクラスファイルが生成されているはずです。
javap で確認していましょう。

$ javap -v -classpath . Test
Compiled from "Test.java"
class Test extends java.lang.Object
SourceFile: "Test.java"
minor version: 0
major version: 49
Constant pool:
version
会議室デビュー日: 2007/05/14
投稿数: 5
投稿日時: 2007-05-15 14:28
今まで席をはずしていたためお返事が遅くなり申し訳ございませんでした。
今試しにworkspaceの場所を変えて、ファイルをそのままコピー試してみたところうまくプログラムが動きました。
根本的な原因解明はできていませんが、eclipseの過去の設定がなぜか消えていなかったようです。
workspaceの場所を変えることで新しい設定になりうまくいったようです。
お騒がせして大変申し訳ございませんでした。


>-source 1.4 -target 1.4 と指定していればクラスバージョン 48 のクラスファイルが>生成されているはずです。
>javap で確認していましょう。
上記方法でよく原因等を今後検討したいと思います。
ご指摘ありがとうございました。

行き詰っていたのですぐにレスポンスをいただけて大変心強かったです。
本当にありがとうございました。
朝日奈ありす
大ベテラン
会議室デビュー日: 2007/05/02
投稿数: 189
お住まい・勤務地: 最北の地
投稿日時: 2007-05-15 20:23
エクリプスでJAVAのバージョン設定変更わすれか
version
会議室デビュー日: 2007/05/14
投稿数: 5
投稿日時: 2007-05-15 21:03
>エクリプスでJAVAのバージョン設定変更わすれか
ご返答ありがとうございます。
上記(再度下記)に記載したeclipseの設定以外でも設定するところがあるのでしょうか?
eclipse関係の書籍を調べていましたが私のほうでは確認できませんでした。。。


【eclipseの設定】
インストール済みのJREはj2sdk1.4.2_12のみ表示され選択されている
コンパイラーのJDK準拠は全て1.4が選択されている
TomcatのVM設定はj2sdk1.4.2_12
mio
ぬし
会議室デビュー日: 2005/08/25
投稿数: 734
お住まい・勤務地: 神奈川県
投稿日時: 2007-05-15 21:45
JSPのコンパイルならEclipseじゃないと思うんですが。
catalina.batの中でJAVA_HOMEを指定してるとか。

って良く見ないで書いたら、jsp自体は大丈夫なのですね。失礼しました。

[ メッセージ編集済み 編集者: mio 編集日時 2007-05-15 21:48 ]

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