前回b85のビルドでエラーが出た問題はb86でも同じでした。
http://d.hatena.ne.jp/torutk/20060527
jscheme.REPLのNoClassDefFoundError問題
j2se/make/sun/rmi/corbalogsources/Makefileの中で、以下のようにCLASSPATHを設定し、jscheme.REPLを実行しています。
JSCHEME_CLASSPATH=$(JSCHEME_LIB_DIRECTORY)/jscheme.jar$(CLASSPATH_SEPARATOR)$(JSCHEME_LIB_DIRECTORY)/jschemelogutil.jar export CLASSPATH=$(JSCHEME_CLASSPATH) JSCHEME_GENERATE_CLASS = $(JAVA) jscheme.REPL $(MC_GENERATE_CLASS)
直接このMakefileを実行すると、環境変数CLASSPATHがMakefileの記述どおり有効になり、jscheme.REPLが見えます。一方トップレベルのMakefileから再帰的に呼び出されてこのMakefileが実行されるときは、この環境変数CLASSPATHがMakefileの記述によらず無効(空)となってしまいます。これを確かめるのに、環境変数_JAVA_LAUNCHER_DEBUGを設定してmakeを実行しました。
D:/work/b86out/bin/java -client -Xmx256m -Xms128m jscheme.REPL ../../../../src/share/classes/com/sun/tools/corba/se/logutil/scripts/mc.scm -main main make-class ../../../../src/share/classes/com/sun/corba/se/spi/logging/data/Activation.mc D:/work/b86out/gensrc/com/sun/corba/se/impl/logging java.lang.NoClassDefFoundError: jscheme/REPL ----_JAVA_LAUNCHER_DEBUG---- JRE path is D:\work\b86out jvm.cfg[0] = ->-client<- :(中略) JavaVM args: version 0x00010002, ignoreUnrecognized is JNI_FALSE, nOptions is 5 option[ 0] = '-Djava.class.path=' :
option[0] = '-Djava.class.path='には環境変数CLASSPATHの内容が入るようです。ここでは空になっています。
そこで、以下のようにこのMakefileを修正しました。
JSCHEME_GENERATE_CLASS = $(JAVA) -classpath "$(JSCHEME_CLASSPATH)" jscheme.REPL $(MC_GENERATE_CLASS)
環境変数CLASSPATHに頼らず、コマンドラインでクラスパスを指定させます。""で囲っているのは、クラスパスの区切子';'がCygwinのシェル(bash)ではコマンドの区切子';'と扱われるのを回避するためです。
この修正が必要なファイルは、
の2つです。