本当に手を取り合って、JDK をゼロからコンパイルする方法を教えます

JAVA を開発ツールとして使用している人は JDK に馴染みがなく、
ほぼ毎日使用していますが、実際に JDK をコンパイルしたことがある人はどれくらいいますか?
非常に少ないと推定されます
が、しばしばいくつかの問題に遭遇する可能性があります。現象は奇妙で定義が困難ですが、JDK でいくつかのトリックを実行できれば、おそらく問題は解決されるでしょう。

この記事は、JDK をコンパイルする方法を説明するものです。
読むだけではなく、自分でコンパイルする必要があります。

環境整備

私が使用している環境は、仮想マシンにインストールされたCentos7.6、純粋なシステムであり、他には何もインストールされていません

説明を見る

openjdk8のビルド説明です、後で重要な部分のスクリーンショットを取り出して簡単に説明します
http://hg.openjdk.java.net/jdk8u/jdk8u/raw-file/tip/README-builds.html

説明書によると、
ここに画像の説明を挿入
コマンドは2ステップです

bash ./configure を
すべて実行する

ただし、
ここに画像の説明を挿入
make バージョンの準備には一部の環境が必要です。3.8.1 以降である必要があります。ご自身で確認してください。Centos 7.6 以降が
ここに画像の説明を挿入
Bootstrap JDK のニーズを満たしている必要があります。7 が必要で、8 は使用できません。パスに bin を追加します。この方法では、パラメータを設定する必要はありません
。jdk7、
jdk-7u80-linux-x64.tar.gzを tar 形式でダウンロードして
解凍します。

tar zxvf jdk-7u80-linux-x64.tar.gz


java /home/jdk/jdk1.7.0_80/binの場所を書き留めます
。パスの追加については心配せず、後でコンパイルするときに一時的なパスを使用してください。

注意点が一つあり、
環境変数にJAVA_HOMEがある場合は削除してください。
ここに画像の説明を挿入

コンポーネントのインストール

コンポーネントの表示
ここに画像の説明を挿入
これら 4 つのコンポーネント
を検索する必要があります

yum search alsa freetype cups xrender

取り付けるパーツを選択してください

yum install alsa-lib alsa-lib-devel freetype-devel freetype cups cups-devel libXrender libXrender-devel

ant をインストールするように書かれているチュートリアルはたくさんあります
が、実際には ant はもう必要ありません

OpenJDK のビルド時に Ant は使用されなくなりました

正しいバージョンをインストールしました

ここに画像の説明を挿入
ここに画像の説明を挿入
必要なバージョンよりも高い場合、
centos7.6 は yum インストールを通じて要件を満たすことができます。

他のコンポーネントをインストールする
ここに画像の説明を挿入
ここでは多くのことを説明しましたが、実際には次のコンポーネントをインストールするだけです。

yum groupinstall "Development Tools"
yum install libXi libXi-devel libXtst-devel libXt-devel

リソースをダウンロードする

mercurial をインストールし
、ソース ファイルのリソース取得プロジェクトをダウンロードします (git の clone コマンドに似ています。コンパイルされた構成ファイルとリソース取得ファイルが含まれており、サイズが小さく、クローン作成後に大きなリソースを取得します)。
ディレクトリ

yum install mercurial
hg clone http://hg.openjdk.java.net/jdk8u/jdk8u60 jdk8u60
cd jdk8u60
bash ./get_source.sh

それからお茶を淹れて待ちます

このプロセスでは失敗しやすいです

このようなプロンプトを見つけた場合

警告: jaxws が異常終了しました (255)
警告: jdk が異常終了しました (255)

get_source を再度実行すると、
成功しなかったいくつかのコンポーネントのみがダウンロードされ、正常にダウンロードされたコンポーネントは再度ダウンロードされません。

長時間スタックして動きがない場合は、帯域幅の使用状況を確認し、何もない場合は

ps aux|grep clone

Python クローン プロセスを強制終了すると、
get_source が失敗します。その後、
失敗したディレクトリを削除し、
get_source を再実行します。この部分は
何度も繰り返される可能性があります。少なくとも 4 ~ 5 回は繰り返しました。jaxws と jdk がダウンロードできません
。最後に、あきらめました。jdk をダウンロードできません。
コンソールに表示されたクローン アドレスを使用してブラウザにアクセスし、
zip パッケージをダウンロードして解凍します。
すぐにダウンロードされるので、その前にもう一度試します何度も挑戦した私がバカです

コンパイルを実行する

実行する前に、Bootstrap JDK を環境変数に追加し、
インターネット上の多くの投稿にアクセスします。このステップでは、Bootstrap JDK のパスや alsa のパスなど、多くのパラメータを追加して設定します。 alsa の依存関係は yum を通じてインストールされ、Bootstrap JDK の bin ディレクトリがパスに追加されます。これらを追加する必要はありません

export PATH=/home/jdk/jdk1.7.0_80/bin:$PATH
java -version
bash ./configure --enable-debug --with-target-bits=64

ここに画像の説明を挿入
これでconfigureはOKです。最後に表示されたccacheは無視して大丈夫です。これはコンパイル高速化のためのものです。なくても問題ありません。インストールしても、 yumでは見つからないということです。

OK、公式 Web サイトのプロンプトに従って最後のステップを実行します

make all

長い間待った後、
途中で無数の警告が表示され、人々は非常に不安になりましたが、
ここに画像の説明を挿入
コンパイルは完了しました。

ここですか?もちろん違います

次回も利用させていただきます

独自にコンパイルした JDK を使用する

以下の画像は、パッケージ
j2sdk-image: JDK
j2re-image:
JDK への JRE です。ディレクトリ構造が非常によく知られているかどうかを確認します。

cp コマンドを使用して jdk ディレクトリをコピーしましょう

cp -r /home/jdk/jdk8u60/build/linux-x86_64-normal-server-fastdebug/images/j2sdk-image /home/jdk/openjdk-8u60-make

バージョンを確認する

/home/jdk/openjdk-8u60-make/bin/java -version

openjdk バージョン「1.8.0-internal-fastdebug」
OpenJDK ランタイム環境 (ビルド 1.8.0-internal-fastdebug-root_2020_03_22_10_01-b00)
OpenJDK 64 ビット サーバー VM (ビルド 25.60-b23-fastdebug、混合モード)

次に、Java 実装を見つけるのがより複雑であることを確認しましょう
。メタベースを選択して、
メタベースの公式 Web サイトから jar をダウンロードして実行し
、run.sh を作成します。

export MB_DB_TYPE=mysql
export MB_DB_DBNAME=metabase
export MB_DB_PORT=3306
export MB_DB_USER=账号
export MB_DB_PASS=密码
export MB_DB_HOST=mysql所在机器
/home/jdk/openjdk-8u60-make/bin/java -jar metabase.jar

実行
の途中にエピソードがあります。メタベースが最終的にデータベース接続を初期化すると、失敗します。

5.0秒後にタイムアウトしました

この問題は非常に厄介なので解決されていません。ファイアウォールをオフにすると動作しません。Oracle の JDK に切り替えると動作しません。作成時にネットワークの設定を間違っていたようです。仮想マシンのことは置いといて
、実行ログによると、コンパイルされた JDK はスムーズに実行できます。
ここに画像の説明を挿入

おめでとうございます。これまでのところ、コンパイルは最終的に成功し
、パッケージ化して使用できるようになりました。

公式アカウントに注目し、コミュニケーションをとり、一緒に進歩していきましょう
公式アカウントに注目し、コミュニケーションをとり、一緒に進歩していきましょう

おすすめ

転載: blog.csdn.net/cowcomic/article/details/105013251