Suse Linux Enterprise Server 11 SP2 を実行している Itanium サーバーで openjdk7 をビルドする際に、ちょっと厄介な問題があります。
インストールのブートストラップとして機能する Sun JDK 1.6 update 33 を正常にインストールしました。そして、ソース ドロップをダウンロードし、openJDK7 インストール ソースをディレクトリに解凍しました。私のビルドはすべてのmake sanity
チェックに合格し、準備ができているように見えます。
JAVA_HOME の設定を解除し、LANG=C を宣言し、ビルドをブートストラップ JDK に向けました。
それから私は呼び出すmake ALLOW_DOWNLOADS=false ALT_BOOTDIR=/usr/java/jdk1.6.0_33 ALT_DROPS_DIR=~/openjdk_src/sourcedrop
ビルドは約 5 ~ 10 分間正常に実行され、SSL ライブラリが見つからないという一連のエラーが表示されます。
これは、jaxws ソース ツリーの次のビルド セグメントで発生し、SSL と関係があるようです。
[javac] Compiling 2735 source files to /root/openjdk_src/openjdk/build/linux-ia64/jaxws/build/classes
[javac] /root/openjdk_src/openjdk/build/linux-ia64/jaxws/drop/jaxws_src/src/com/sun/tools/internal/ws/wsdl/parser/DOMForest.java:54: error: package javax.net.ssl does not exist
[javac] import javax.net.ssl.HttpsURLConnection;
[javac] ^
[javac] /root/openjdk_src/openjdk/build/linux-ia64/jaxws/drop/jaxws_src/src/com/sun/tools/internal/ws/wsdl/parser/DOMForest.java:55: error: package javax.net.ssl does not exist
[javac] import javax.net.ssl.HostnameVerifier;
[javac] ^
[javac] /root/openjdk_src/openjdk/build/linux-ia64/jaxws/drop/jaxws_src/src/com/sun/tools/internal/ws/wsdl/parser/DOMForest.java:56: error: package javax.net.ssl does not exist
[javac] import javax.net.ssl.SSLSession;
[javac] ^
[javac] /root/openjdk_src/openjdk/build/linux-ia64/jaxws/drop/jaxws_src/src/com/sun/tools/internal/ws/wsdl/parser/MetadataFinder.java:54: error: package javax.net.ssl does not exist
[javac] import javax.net.ssl.HostnameVerifier;
[javac] ^
[javac] /root/openjdk_src/openjdk/build/linux-ia64/jaxws/drop/jaxws_src/src/com/sun/tools/internal/ws/wsdl/parser/MetadataFinder.java:55: error: package javax.net.ssl does not exist
[javac] import javax.net.ssl.HttpsURLConnection;
[javac] ^
[javac] /root/openjdk_src/openjdk/build/linux-ia64/jaxws/drop/jaxws_src/src/com/sun/tools/internal/ws/wsdl/parser/MetadataFinder.java:56: error: package javax.net.ssl does not exist
[javac] import javax.net.ssl.SSLSession;
[javac] ^
[javac] /root/openjdk_src/openjdk/build/linux-ia64/jaxws/drop/jaxws_src/src/com/sun/tools/internal/ws/wsdl/parser/MetadataFinder.java:218: error: cannot find symbol
[javac] private static class HttpClientVerifier implements HostnameVerifier {
[javac] ^
[javac] symbol: class HostnameVerifier
[javac] location: class MetadataFinder
[javac] /root/openjdk_src/openjdk/build/linux-ia64/jaxws/drop/jaxws_src/src/com/sun/tools/internal/ws/wsdl/parser/MetadataFinder.java:219: error: cannot find symbol
[javac] public boolean verify(String s, SSLSession sslSession) {
[javac] ^
[javac] symbol: class SSLSession
[javac] location: class HttpClientVerifier
[javac] /root/openjdk_src/openjdk/build/linux-ia64/jaxws/drop/jaxws_src/src/com/sun/xml/internal/ws/developer/JAXWSProperties.java:32: error: package javax.net.ssl does not exist
[javac] import javax.net.ssl.HostnameVerifier;
[javac] ^
[javac] /root/openjdk_src/openjdk/build/linux-ia64/jaxws/drop/jaxws_src/src/com/sun/xml/internal/ws/developer/JAXWSProperties.java:33: error: package javax.net.ssl does not exist
[javac] import javax.net.ssl.HttpsURLConnection;
[javac] ^
[javac] /root/openjdk_src/openjdk/build/linux-ia64/jaxws/drop/jaxws_src/src/com/sun/xml/internal/ws/developer/JAXWSProperties.java:34: error: package javax.net.ssl does not exist
[javac] import javax.net.ssl.SSLSocketFactory;
[javac] ^
[javac] /root/openjdk_src/openjdk/build/linux-ia64/jaxws/drop/jaxws_src/src/com/sun/xml/internal/ws/transport/http/client/HttpClientTransport.java:39: error: package javax.net.ssl does not exist
[javac] import javax.net.ssl.SSLSocketFactory;
[javac] ^
[javac] /root/openjdk_src/openjdk/build/linux-ia64/jaxws/drop/jaxws_src/src/com/sun/xml/internal/ws/transport/http/client/HttpClientTransport.java:40: error: package javax.net.ssl does not exist
[javac] import javax.net.ssl.HttpsURLConnection;
[javac] ^
[javac] /root/openjdk_src/openjdk/build/linux-ia64/jaxws/drop/jaxws_src/src/com/sun/xml/internal/ws/transport/http/client/HttpClientTransport.java:41: error: package javax.net.ssl does not exist
[javac] import javax.net.ssl.HostnameVerifier;
[javac] ^
[javac] /root/openjdk_src/openjdk/build/linux-ia64/jaxws/drop/jaxws_src/src/com/sun/xml/internal/ws/transport/http/client/HttpClientTransport.java:42: error: package javax.net.ssl does not exist
[javac] import javax.net.ssl.SSLSession;
[javac] ^
[javac] /root/openjdk_src/openjdk/build/linux-ia64/jaxws/drop/jaxws_src/src/com/sun/xml/internal/ws/transport/http/client/HttpClientTransport.java:302: error: cannot find symbol
[javac] private static class HttpClientVerifier implements HostnameVerifier {
[javac] ^
[javac] symbol: class HostnameVerifier
[javac] location: class HttpClientTransport
[javac] /root/openjdk_src/openjdk/build/linux-ia64/jaxws/drop/jaxws_src/src/com/sun/xml/internal/ws/transport/http/client/HttpClientTransport.java:303: error: cannot find symbol
[javac] public boolean verify(String s, SSLSession sslSession) {
[javac] ^
[javac] symbol: class SSLSession
[javac] location: class HttpClientVerifier
[javac] /root/openjdk_src/openjdk/build/linux-ia64/jaxws/drop/jaxws_src/src/com/sun/tools/internal/ws/wsdl/parser/MetadataFinder.java:154: error: cannot find symbol
[javac] if (conn instanceof HttpsURLConnection) {
[javac] ^
[javac] symbol: class HttpsURLConnection
[javac] location: class WSEntityResolver
[javac] /root/openjdk_src/openjdk/build/linux-ia64/jaxws/drop/jaxws_src/src/com/sun/tools/internal/ws/wsdl/parser/MetadataFinder.java:156: error: cannot find symbol
[javac] ((HttpsURLConnection) conn).setHostnameVerifier(new HttpClientVerifier());
[javac] ^
[javac] symbol: class HttpsURLConnection
[javac] location: class WSEntityResolver
[javac] /root/openjdk_src/openjdk/build/linux-ia64/jaxws/drop/jaxws_src/src/com/sun/xml/internal/ws/transport/http/client/HttpClientTransport.java:207: error: cannot find symbol
[javac] if (httpConnection instanceof HttpsURLConnection) {
[javac] ^
[javac] symbol: class HttpsURLConnection
[javac] location: class HttpClientTransport
[javac] /root/openjdk_src/openjdk/build/linux-ia64/jaxws/drop/jaxws_src/src/com/sun/xml/internal/ws/transport/http/client/HttpClientTransport.java:223: error: cannot find symbol
[javac] ((HttpsURLConnection) httpConnection).setHostnameVerifier(new HttpClientVerifier());
[javac] ^
[javac] symbol: class HttpsURLConnection
[javac] location: class HttpClientTransport
[javac] /root/openjdk_src/openjdk/build/linux-ia64/jaxws/drop/jaxws_src/src/com/sun/xml/internal/ws/transport/http/client/HttpClientTransport.java:227: error: cannot find symbol
[javac] HostnameVerifier verifier =
[javac] ^
[javac] symbol: class HostnameVerifier
[javac] location: class HttpClientTransport
[javac] /root/openjdk_src/openjdk/build/linux-ia64/jaxws/drop/jaxws_src/src/com/sun/xml/internal/ws/transport/http/client/HttpClientTransport.java:228: error: cannot find symbol
[javac] (HostnameVerifier) context.invocationProperties.get(JAXWSProperties.HOSTNAME_VERIFIER);
[javac] ^
[javac] symbol: class HostnameVerifier
[javac] location: class HttpClientTransport
[javac] /root/openjdk_src/openjdk/build/linux-ia64/jaxws/drop/jaxws_src/src/com/sun/xml/internal/ws/transport/http/client/HttpClientTransport.java:230: error: cannot find symbol
[javac] ((HttpsURLConnection) httpConnection).setHostnameVerifier(verifier);
[javac] ^
[javac] symbol: class HttpsURLConnection
[javac] location: class HttpClientTransport
[javac] /root/openjdk_src/openjdk/build/linux-ia64/jaxws/drop/jaxws_src/src/com/sun/xml/internal/ws/transport/http/client/HttpClientTransport.java:234: error: cannot find symbol
[javac] SSLSocketFactory sslSocketFactory =
[javac] ^
[javac] symbol: class SSLSocketFactory
[javac] location: class HttpClientTransport
[javac] /root/openjdk_src/openjdk/build/linux-ia64/jaxws/drop/jaxws_src/src/com/sun/xml/internal/ws/transport/http/client/HttpClientTransport.java:235: error: cannot find symbol
[javac] (SSLSocketFactory) context.invocationProperties.get(JAXWSProperties.SSL_SOCKET_FACTORY);
[javac] ^
[javac] symbol: class SSLSocketFactory
[javac] location: class HttpClientTransport
[javac] /root/openjdk_src/openjdk/build/linux-ia64/jaxws/drop/jaxws_src/src/com/sun/xml/internal/ws/transport/http/client/HttpClientTransport.java:237: error: cannot find symbol
[javac] ((HttpsURLConnection) httpConnection).setSSLSocketFactory(sslSocketFactory);
[javac] ^
[javac] symbol: class HttpsURLConnection
[javac] location: class HttpClientTransport
[javac] Note: Some input files use or override a deprecated API.
[javac] Note: Recompile with -Xlint:deprecation for details.
[javac] Note: Some input files use unchecked or unsafe operations.
[javac] Note: Recompile with -Xlint:unchecked for details.
[javac] 27 errors
これを回避するために、を に展開jsse.pack
しjsse.jar
ましたjdk/jre/bin
。
make ALLOW_DOWNLOADS=false ALT_BOOTDIR=/usr/java/jdk1.6.0_33 ALT_DROPS_DIR=~/openjdk_src/sourcedrop DISABLE_HOTSPOT_OS_VERSION_CHECK=ok
それから、よくアーキテクチャを無視して作ることを覚えていれば。
VM で adlc を作成すると、ビルドは失敗します。
Making adlc
g++ -Wl,-relax -Xlinker -O1 -Xlinker -export-dynamic -o ../generated/adfiles/adlc
../generated/adfiles/adlparse.o ../generated/adfiles/arch Desc.o
../generated/adfiles/arena.o ../generated/adfiles/dfa.o ../generated/adfiles/dict2.o
../generated/adfiles/filebuff.o ../generated/adfil es/forms.o
../generated/adfiles/formsopt.o ../generated/adfiles/formssel.o
../generated/adfiles/main.o
../generated/adfiles/adlc-opcodes.o ../ generated/adfiles/output_c.o
../generated/adfiles/output_h.o
make[6]: *** No rule to make target
`/root/openjdk_src/openjdk/hotspot/src/cpu/ia64/vm/.ad', needed by
`../generated/adfiles/linux_.ad'. Stop .
それで?adlc とは何ですか? なぜビルドされないのですか?