Duplicate :
|
|
Relates :
|
|
Relates :
|
Name: rmT116609 Date: 06/17/2003 FULL PRODUCT VERSION : java version "1.4.2-beta" Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2-beta-b19) Java HotSpot(TM) Client VM (build 1.4.2-beta-b19, mixed mode) FULL OS VERSION : Microsoft Windows XP [Version 5.1.2600] EXTRA RELEVANT SYSTEM CONFIGURATION : * environment with or without JAVA_HOME=c:\java. * I have the JDK installed in c:\java. * My PATH picks up javap from c:\java\bin. A DESCRIPTION OF THE PROBLEM : Two problems 1. The plain command javap java.lang.Object (no explicit -classpath option) no longer works in 1.4.2-beta. It used to work in all versions upto and including 1.4.1_02. I have to specify a classpath of $JAVA_HOME/jre/lib/rt.jar for it to work. 2. Even if I do specify this classpath explicitly, it no longer prints out the flag bits or the inner classes. For instance, javap java.util.Map used to print out flags like "ACC_SUPER not set", and also the contents of the nested interface Map.Entry. In 1.4.2-beta, it no longer prints these out. STEPS TO FOLLOW TO REPRODUCE THE PROBLEM : 1. Run 'javap java.util.Map' from the command line EXPECTED VERSUS ACTUAL BEHAVIOR : EXPECTED - Javap output: Compiled from Map.java public interface java.util.Map /* ACC_SUPER bit NOT set */ { public abstract int size(); public abstract boolean isEmpty(); public abstract boolean containsKey(java.lang.Object); public abstract boolean containsValue(java.lang.Object); public abstract java.lang.Object get(java.lang.Object); public abstract java.lang.Object put(java.lang.Object, java.lang.Object); public abstract java.lang.Object remove(java.lang.Object); public abstract void putAll(java.util.Map); public abstract void clear(); public abstract java.util.Set keySet(); public abstract java.util.Collection values(); public abstract java.util.Set entrySet(); public abstract boolean equals(java.lang.Object); public abstract int hashCode(); public static interface java.util.Map. Entry /* ACC_SUPER bit NOT set */ { public abstract java.lang.Object getKey(); public abstract java.lang.Object getValue(); public abstract java.lang.Object setValue(java.lang.Object); public abstract boolean equals(java.lang.Object); public abstract int hashCode(); } } ACTUAL - 1. Without the -classpath option: ERROR:could not find java.util.Map. 2. With the -classpath option: Compiled from "Map.java" interface java.util.Map{ public abstract int hashCode(); public abstract int size(); public abstract void clear(); public abstract boolean isEmpty(); public abstract boolean containsKey(java.lang.Object); public abstract boolean containsValue(java.lang.Object); public abstract boolean equals(java.lang.Object); public abstract java.util.Collection values(); public abstract void putAll(java.util.Map); public abstract java.util.Set entrySet(); public abstract java.util.Set keySet(); public abstract java.lang.Object get(java.lang.Object); public abstract java.lang.Object remove(java.lang.Object); public abstract java.lang.Object put(java.lang.Object,java.lang.Object); } Notice: (a) inner class not printed. (b) flags not printed (c) formatting slightly screwed up ({ on the same line as the classname, and no spacing before the {). ERROR MESSAGES/STACK TRACES THAT OCCUR : ERROR:could not find java.util.Map. REPRODUCIBILITY : This bug can be reproduced always. CUSTOMER SUBMITTED WORKAROUND : Specify -classpath $JAVA_HOME/jre/lib/rt.jar to at least get the top-level class. No workaround for displaying the nested class. Release Regression From : 1.4.1_03 The above release value was the last known release where this bug was known to work. Since then there has been a regression. (Review ID: 188240) ======================================================================
|