java
コマンド・オプション-Xinternalversion
を使用して、JDKを構築したMicrosoft Visual Studioのバージョンを確認します。 このバージョンは、JDKリリースによって異なる場合があります。
Javaアプリケーションでクラッシュが発生し、コンパイラの異なるリリースでコンパイルされたネイティブ・ライブラリまたはJNIライブラリがある場合は、ランタイム間の互換性の問題を考慮する必要があります。 具体的には、Microsoftのガイドラインに従って複数のランタイムを処理している場合にのみ、環境がサポートされます。 たとえば、あるランタイムを使用してメモリーを割り当てた場合は、同じランタイムを使用してそれを解放する必要があります。 リソースの割り当て時と異なるライブラリを使用してリソースを解放すると、予測できない動作やクラッシュが発生する可能性があります。
8u261より前のJDKおよびJREリリースは、MSVCR100.dll
を含むMicrosoft Visual C++ 2010 SP1再配布可能パッケージ(x86/x64)を使用および出荷します。 JDKおよびJREの以降のリリースは、Microsoft Visual Studioの新しいバージョンで構築されています。 その結果、ライブラリとDLLの異なるセットが使用されます。
JDKまたはJREディレクトリにMSCVR100.dll
が存在することに依存し、想定したネイティブ・アプリケーションは実行に失敗します。 これが発生すると、次のようなエラーが表示されます:
MSVCR100.dll
が見つからなかったため、コードの実行を続行できません。 プログラムを再インストールすると、この問題が修正される可能性があります。
これらのアプリケーションを再構築し、Visual Studioの新しいインスタンスを使用する最新のC++ランタイム依存関係とともに出荷します。 アプリケーションが、JDKまたはJRE自体に含まれていないJDKまたはJREに含まれているサード・パーティのDLLに依存していないことを確認します。
詳細は、Microsoftドキュメントの「サポートされている最新のVisual C++ダウンロード」および「2020年のサポート終了製品」を参照してください。