- PR -

classファイルの差し替えの方法

1
投稿者投稿内容
まつじん
ベテラン
会議室デビュー日: 2005/12/02
投稿数: 54
投稿日時: 2007-03-26 18:06
現在、Javaで作成したWebアプリのバグや仕様変更によるプログラムの修正を行っています。
<環境>
java1.5.0_11
Eclipse3.2
Tomcat5.5
Apache2.0.54
それで、Eclipseで修正しコンパイルされたclassファイルのみを差し替えて変更をかけようとしています。しかし、修正したclassファイルのみを差し替えても差し替えた箇所でエラーが出て動きません。
ちなみにwarファイルを作成して展開すると問題なく動きます。
classファイルのみを差し替えることは出来ないのでしょうか。
ご存知の方がいたら教えてください。
Edosson
ぬし
会議室デビュー日: 2004/04/30
投稿数: 675
投稿日時: 2007-03-26 18:28
差し替える、というのは、Tomcat稼働中に、classファイルを上書きしたと言うことですか?
その場合は、再起動が必要になるのではないかと。

Tomcat Managerなら、個別のWebアプリごとに再起動がかけられます。
まつじん
ベテラン
会議室デビュー日: 2005/12/02
投稿数: 54
投稿日時: 2007-03-26 18:37
Edossonさん、ご返答ありがとうございます。
Tomcatは停止して書き換えるような感じになります。
一応、今回もclassファイルの差し替えを行った後に、
Tomcatの再起動をかけてみたのですが駄目でした。
他にはworkフォルダを削除をしてみたり、キャッシュを
削除してみたのですが駄目でした。
Edosson
ぬし
会議室デビュー日: 2004/04/30
投稿数: 675
投稿日時: 2007-03-26 18:46
いったんWARファイルを作ったら、デプロイがうまくいくというのは、
WARファイル作成の過程では、ソースからのコンパイルは行わず、
存在しているclassファイルを固めているだけなんでしょうか。

だとしたら、Eclipseが、古いソースをコンパイルして、
classファイルを上書きしているから、とも考えられますけど。
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2007-03-26 18:49
どんなエラーがでているのでしょうか?
nagise
ぬし
会議室デビュー日: 2006/05/19
投稿数: 1141
投稿日時: 2007-03-26 18:50
勘ですが。
何か別の実体をもってるような気がしますね。
真に実行されているのが/WEB-INF/classes/以下のclassファイルなのであれば、
classファイルを差し替えて挙動が変わらないはずがない。

warファイルでのデプロイをされているようなので
古いwarファイルが残ったままになっていて
そちら側が動いているという印象を受けます。

そのあたりの挙動はそらんじて仕様を言えるほど詳しくないですが…
warファイルが展開されて動くのでしたっけ?
webappフォルダ以下にwarファイルがあると自動展開・配備されるんでしたっけ?
その辺の挙動の調査をしたら何かわかるかもしれませんね。
taku
ぬし
会議室デビュー日: 2002/11/12
投稿数: 918
お住まい・勤務地: 墨田区→中野区
投稿日時: 2007-03-26 18:59
引用:

nagiseさんの書き込み (2007-03-26 18:50) より:
webappフォルダ以下にwarファイルがあると自動展開・配備されるんでしたっけ?


 そうですね、Tomcatはwebappにあるwarファイルを勝手に展開したはずです。
私はもう長いことTomcatに触れてないですよ。
今はTomcat以外でも「Oracle Application Server」とか、
フリーのアプリケーションサーバーがあるので。
でも、「Oracle Application Server」はまだVistaで動かないのが難ですが。t
まつじん
ベテラン
会議室デビュー日: 2005/12/02
投稿数: 54
投稿日時: 2007-03-26 19:29
Edosonさん、インギさん、nagiseさん、takuさん、ご返答ありがとうございます。
nagiseさんが書かれた内容をみて、「はっ!?」と我に返りました。
実は、test.warファイルを展開するとtestフォルダが作成されるのですが、
そのtestフォルダのclassesファイル内のファイルを更新した後に
test.warファイルを削除していませんでした。
それで、test.warファイルを削除したらエラーが出ることもなく、修正したファイルのみが反映されました。
うまく言葉でお伝えすることができませんが、test.warファイルとtestフォルダが2つあった為におかしな挙動?をしたのではと勝手に自分では解釈しております。
みなさんのアドバイス助かりました。ありがとうございました。
1

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