JDK-6282039 : java.exe/javaw.exe need to work with vc7
  • Type: Bug
  • Component: tools
  • Sub-Component: launcher
  • Affected Version: 6
  • Priority: P2
  • Status: Resolved
  • Resolution: Fixed
  • OS: generic,windows_2000,windows_xp
  • CPU: generic,x86
  • Submitted: 2005-06-07
  • Updated: 2010-08-06
  • Resolved: 2005-10-10
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
JDK 6
6 b59cFixed
Related Reports
Duplicate :  
Relates :  
Relates :  
Relates :  
Relates :  
Description
The upgrade to vc7 means that we now have a dependency on these dll's: msvcp71.dll and msvcr71.dll

According to Microsoft, we aren't supposed to copy the dll's to the system directory like we did with msvcrt.dll in previous releases:

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vclib/html/_crt_c_run.2d.time_libraries.asp

So with the upgrade to vc7, we are copying these dll's to the jdk/bin and jre/bin directories for all of those .exe's/dll's to use, but the java.exe/javaw.exe in the system directory will not have access to them.  So we probably need to statically link these into the java.exe/javaw.exe executables.
###@###.### 2005-06-07 23:29:26 GMT

Same problem reported by a CAP member which stop them to continually test
mustang build:
----------------------------------
J2SE Version (please include all output from java -version flag):*
    java version "1.6.0-ea"
   Java(TM) 2 Runtime Environment, Standard Edition (build 1.6.0-ea-b42)
   Java HotSpot(TM) Client VM (build 1.6.0-ea-b42, mixed mode, sharing)

*Does this problem occur on J2SE 1.4.x or 5.0.x?  Yes / No (pick one) *
    No

*Operating System Configuration Information (be specific): *
    XP SP2 with the very latest updates. No other product, just Java.

*Hardware Configuration Information (be specific): *
    Platform configuration:

    CPU:     Intel 32bit Single Processor
    Processor Speed: 1893 MHz

*Bug Description: *

  See attached screen captures. 
  I get a message saying the MSVCR71.DLL is missing.

*Steps to Reproduce (be specific): *
  Try what follows :

  Type : jdb -sourcepath .; Test
  Type : run

Best regards,
Jean-Bernard Clerin


______________________________________________________________________________________

/**
 * Test.java
 */

/**
 * Class:   Test
 */
public class Test
   {
    /**
     * Constructor: Test
     * @return instance of Test
     */
    public Test()
       {
        super();
        System.out.println("# ..................");
       } /* End of Constructor: Test */


    /**
     * Method: main <br>
     * Note: Called only if we're an application. <br>
     * @param java.lang.String[] args the command line arguments
     * @return void
     */
    public static void main(java.lang.String[] args)
       {
        try
           {
            /* Creates new MainObject */
            Test self = new Test();
           } /* End try */
        catch (java.lang.Throwable exc)
           {
            /* Remove this comment and specialize processing here. */
            exc.printStackTrace(System.err);
           } /* End catch */
       } /* End of Method: main */

   } /* End of Class: Test */

Comments
SUGGESTED FIX New files: j2se/src/windows/bin/launcher.c j2se/make/java/launcher/Makefile Modified files: j2se/make/java/Makefile deploy/make/plugin/controlpanel/cpl/Makefile deploy/src/plugin/win32/regutils/RegInstall.cpp Note that this spans two integration environments. This shouldn't be much of a problem, but the j2se integration needs to happen first.
29-08-2005

EVALUATION As above. The mini-launcher needs to follow the same algorithm already implemented in the existing launcher to find the correct JRE/JDK. This is keyed by the registry value CurrentVersion. The mini-launcher needs to be statically linked. The Microsoft policy basically does not allow dynamically linked executables to be placed in the system32 directory - Microsoft takes yet another step away from shared resources and interface/implementation stability by not allowing these libraries to be shared. Its not only java and javaw, but also javaws and javacpl. java, javaw and javaws can all be handled by a single small binary which uses its name to know what to exec. javacpl is already the correct code, it just needs to be statically linked.
29-08-2005

EVALUATION The solution is to create a "mini launcher" in C:\Program Files\ that will do a windows approximation to a Unix exec to the proper binary in the appropriate JDK/JRE installation.
13-08-2005

EVALUATION Must be fixed. ###@###.### 2005-06-08 21:21:54 GMT
08-06-2005