-
Bug
-
Resolution: Duplicate
-
P3
-
None
-
1.4.2
-
x86
-
windows_xp
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)
======================================================================
- duplicates
-
JDK-4798312 In Windows, javap doesnt load classes from rt.jar
-
- Resolved
-
- relates to
-
JDK-4880672 javap does not output inner interfaces of an interface
-
- Closed
-
-
JDK-4880663 javap could output whitespace between class name and opening brace
-
- Closed
-