- - PR -
JBossでEJB - NoClassDefFoundError
1
| 投稿者 | 投稿内容 | ||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2004-01-24 11:47
JBoss4.0DR2を使って簡単なEJB(単純なSessionBean)を実行しようとしています。
EJBのデプロイは完了し、クライアント(mainメソッドのあるコンソールアプリケーション)を実行する際に、以下のようにNoClassDefFoundExceptionが発生します。
コンパイルは成功しており、実行時にJ2SEのコアライブラリ(javax.net)に含まれるSocketFactoryが見つからないと言われているのですが、どのような原因が考えられるでしょうか? クライアント側ではJBossに付属の「jboss-j2ee.jar」、「jboss-all-client.jar」にクラスパスを通しています。 また、JBoss付属のjndi.propertiesもクラスパスに含まれるディレクトリに配置しています。 # コンパイル時のクラスパスと、実行時のクラスローダーのクラスパスが異なっているということでしょうか。 [ メッセージ編集済み 編集者: EM 編集日時 2004-01-24 11:49 ] | ||||||||||||||||
|
投稿日時: 2004-01-24 12:28
SocketFactoryクラスはJ2SE1.4で導入されたクラスですが、実行環境のVMが1.3ということ はないでしょうか。 | ||||||||||||||||
|
投稿日時: 2004-01-24 14:08
ukさん、アドバイスありがとうございます。
おっしゃるとおりでした。 1.4をインストールしていたのですが、Oracleのインストール時にPATHを書き換えられていました。 で、SocketFactoryの件は解決したのですが、違うクラスのNoClassDefFoundErrorが出て困っています。 jboss-all-client.jarがクライアントに必要な全てのライブラリだと認識していたのですが。。。 例を挙げると、 org.jboss.system.ServiceMBeanSupportが見つからないと言われ、JBossのサーバー側のlibにあるjboss-systeml.jarにクラスパスを通しました。するとServiceMBeanSupportのエラーは消えたのですが、また違うjavax.management.NotificationBroadcasterSupportがないと言われます。 クライアント用のJARファイルはないのでしょうか? | ||||||||||||||||
|
投稿日時: 2004-01-24 14:30
どうやらJMXのコンポーネントを呼び出しているようですが、普通クライアントから呼び出さ れるものではないと思います。最初のエラーから考えて、InitialContextの取得に失敗して いるようですが、デフォルトのInitialContextを取得しようとしていませんか? JBossは 使ったことありませんが、リモートのEJBをlookupするのなら、リモートのContextを参照 するようにしなければいけません。 | ||||||||||||||||
|
投稿日時: 2004-01-24 14:43
ukさん、たびたびアドバイスありがとうございます。
InitialContextを取得するコードは
のように記述しておりますが、このクライアントと同じディレクトリに以下の記述のjndi.propertiesファイルを置いています。
# JBossはローカルで動かしています。 上記jndi.propertiesファイルがJBossの提供するJNDIサーバーの設定だとの認識なのですが誤っているでしょうか。 | ||||||||||||||||
|
投稿日時: 2004-01-24 15:04
なるほど、ではカレントディレクトリにクラスパスは通っていますか?
いや、同一のマシンでも別のVMならリモートです。 | ||||||||||||||||
|
投稿日時: 2004-01-24 15:25
いろいろと調べていたのですが原因がわからず、JBoss3.2をダウンロードして試したところ、問題なく実行できました。
クライアントライブラリ以外は全て同じ環境、実行方法なので、どうもこのクライアントライブラリの辺りに問題があると思うのですが。。。
大丈夫です。通っています。 JBoss3.2ではクライアント用ライブラリとして、jbossall-client.jar というファイルにだけクラスパスを通せばよいのですが、JBoss4.0では違うようです。 #jbossall-client.jarファイルもありません。 #代わりにjboss-all-client.jarというファイルがありますが、書いてきたようにダメでした。 ukさん、いろいろアドバイスありがとうございました。解決には至っていませんが、勉強になりました。 引き続き、調査してみますが、何か情報があればよろしくお願いします。 [ メッセージ編集済み 編集者: EM 編集日時 2004-01-24 15:27 ] | ||||||||||||||||
1
