Details
-
Improvement
-
Status: Open
-
Major
-
Resolution: Unresolved
-
None
-
None
-
None
-
None
Description
Natively, in the bytecode, class names look like this:
java/lang/String
You can see it in NoClassDefFoundError, etc.
Bytecode decompilers and other bytecode-engineering libs (like kotlinx-metadata) will use this native format.
For some reason, BCEL explicitly converts it to the dot notation:
Shorten long class names, java/lang/String becomes java.lang.String
I'm not sure how is that shorter, but it definitely makes interoperability harder, ie. if you want to base Java-specific bytecode engineering with BCEL and still reuse Kotlin-specific libraries for Kotlin-specific bytecode.
Could JavaClass expose the real, actual, bytecode-level class name?