このページで解決しない高度なJavaのシステム障害はJaTSにお任せください

Trouble 4: クラスパスに関する問題



<Q4-1>サーバプログラムもクライアントプログラムもクラスパス設定はあっているのに、Naming.bind()、Naming.lookup()でSkel/Stubクラスが見つからないことが原因のRemoteExceptionが発生してしまいます。


<発生環境>
OS RedHatLinux6.1/6.2
JDK JDK1.2/JDK1.3
Vender Sun
<A4-1>
サーバプログラムやクライアントプログラムのcodebaseを正しく設定することで解決できます。
rmiregistryにCLASSPATH環境変数で対象のクラスファイルを設定するという回避策もありますが、rmiregistryの環境設定が必要となるため、推奨されません。
また、codebaseを設定した場合はrmiregistryにCLASSPATHを設定してはいけません。
Page Top

<Q4-2>java.lang.Stringなど、Java標準APIで用意されているクラスへパッチを適用したい時に、元の環境を壊すことなく実現する方法はありませんか。


<発生環境>
OS any
JDK any
Vender any
<A4-2>
以下の方法を用いれば、標準jarファイルに手を加えることなく、パッチ適用を実現することができます。
set customClass=(修正したクラスへのパス)
java -Xbootclasspath/p:%customClass%

Page Top

<Q4-3>「-classpath」と「-jar」オプションを併用し、それぞれ異なるjarファイルを指定して実行したところ、NoClassDefFoundErrorが発生しました。

クラスパスで指定していたクラス群を、otherlib.jarとしてまとめ、以下のように起動したのですが、otherlib.jarを読み込めずjava.lang.NoClassDefFoundErrorが発生しました。
なお、マニフェストファイルにてMain-Classの指定を正しく行っています。

java -classpath otherlib.jar -jar myprog.jar
※NoClassDefFoundErrorについての初心者向けのやさしい解説は、「初心者のためのJava講座」番外編3をご覧下さい。

<発生環境>
OS any
JDK any
Vender any
<A4-3>
Javaプログラムを-jar オプションで起動する際は、マニフェストファイルでClass-Pathエントリを設定する必要があります。
マニフェストファイルに以下のエントリを作成し、Jarファイルを作り直して下さい。 詳細はこちらを参照
  -------------------------------------
    Manifest-Version: 1.0
    Created-By: Ant 1.4.1
    Main-Class: test.jar.MainClass
    Class-Path: otherlib.jar     ←この行を追加
  -------------------------------------
なお、-classpathは不要ですので、以下のように実行します。
    java -jar myprog.jar

Page Top

注意:本文書の内容に誤りがあり、またこの文書によって不利益を被っても、
Acroquest Technology 株式会社は一切関知いたしません。

  • 現象別Index
  • 原因別Index

Find Bugsバグ詳細

Find Bugs Bug Descriptions日本語版

RSSで更新情報を取得する

RSSとは、ホームページの更新情報を配信する為のフォーマットです。
RSSを利用すると、登録したページの情報が更新された場合に、更新情報を自動的に受け取る事ができます。

詳細

弊社小森が執筆致しました

Javaでオブジェクト指向開発

Javaプログラミング言語習得において、新人プログラマーの最初の障害は「オブジェクト指向の壁」です。
本書は、Javaのソフトウェア開発を中心に事業を発展させてきたAcroquest社の新人教育セミナーを加筆・書籍化したもので、大卒の新人に対して、ゼロからJava言語を教えてきた実績をフィードバックしています。

メールマガジン配信中

Javaトラブルシューティングのメルマガをはじめました!是非ご購読ください

詳細