Java Platform, Standard Edition Troubleshooting Guide
Contents    Previous    Next

5.3 Microsoft Visual C++ Version Considerations

5.3.1 JNI Libraries Compiled with Different Microsoft Visual Studio Version

The JDK software is built on Windows using Microsoft Visual Studio 2017 for both 32-bit and 64-bit platforms. If you experience a crash with a Java application and if you have native or JNI libraries that are compiled with a different release of the compiler, then you must consider compatibility issues between the runtimes. Specifically, your environment is supported only if you follow the Microsoft guidelines when dealing with multiple runtimes. For example, if you allocate memory using one runtime, then you must release it using the same runtime. Unpredictable behavior or crashes can arise if you release a resource using a different library than the one that allocated the resource.

5.3.2 Microsoft C Runtime Library (MSVCR) Issues

JDK and JRE 8u261 and later is built with Microsoft Visual Studio 2017. Previous versions of the JDK and JRE used and shipped the Microsoft Visual C++ 2010 SP1 Redistributable Package (x86/x64) that included MSVCR100.dll. However, Microsoft Visual Studio 2017 uses a different set of libraries and DLLs.

Native applications that depended on and assumed the presence of MSCVR100.dll in the JDK or JRE directory will fail to run. When this happens, users will see an error such as:

The code execution cannot proceed because MSVCR100.dll was not found. Reinstalling the program may fix this problem.

Rebuild these applications and ship them with modern C++ runtime dependencies that use a later instance of Visual Studio. Ensure your applications don't depend on third-party DLLs included with the JDK or JRE that are not part of the JDK or JRE itself.

For more information, see The latest supported Visual C++ downloads and Products Ending Support in 2020 from Microsoft Docs.

Contents    Previous    Next

Copyright © 1993, 2021, Oracle and/or its affiliates. All rights reserved.