FIX: IllegalAccessError Using Private Inherited Constructor (177180)
The information in this article applies to:
- Microsoft virtual machine
- Microsoft Visual J++ 1.1
- Microsoft SDK for Java 2.0
This article was previously published under Q177180 SYMPTOMS
If a class (B) inherits from a class (A) that has a private default
constructor, an attempt to instantiate class (B) should result in a
compiler error. The compiler shipped with Visual J++ (version 1.01.7022)
does not catch this error. The Microsoft virtual machine, however,
does catch this error. When the applet or application is run the following
error is generated by the Microsoft virtual machine:
java.lang.IllegalAccessError: A: method <init>()V is inaccessible
NOTE: Non-Microsoft virtual machines may not throw this error. It is,
however, correct behavior to do so.
RESOLUTION
Use the compiler shipped with SDK for Java 2.0x with Visual J++. You can do
this by replacing the compiler file in Visual J++ with three files from the
Microsoft SDK for Java. First, save a copy of the compiler (Jvc.exe) from
your existing Visual J++ installation. Next, copy Jvc.exe, Jps.dll, and
Msjvc.dll into your Visual J++ directory. Projects will then build using
the new compiler.
The new compiler will catch this problem by generating the following error
message:
error J0147: Cannot access private member 'A()' in class 'A' from class
'B'
STATUS
This problem was corrected in Jvc.exe version 1.02.4337, which ships in the SDK
for Java version 2.0.
REFERENCES
For the latest Knowledge Base articles and other support information on
Visual J++ and the SDK for Java, see the following pages on the Microsoft
Technical Support site:
Modification Type: | Minor | Last Reviewed: | 8/25/2005 |
---|
Keywords: | kbBug kbcode kberrmsg kbfix kbSDKJava200fix KB177180 |
---|
|