Library source does not match the byte code
Answered
I am getting this red banner on a few classes from a Java library.
By following the link to the decompiled class file, I can see that the class file is the expected one and is one that I just rebuilt, so it should match the source.
If I follow the link to the diff, I get a display that is of little use because there are no method implementations. There are also differences in ordering.
I have checked several other classes from the same library and found only two that report a mismatch. I don't see any obvious difference between the classes that report a mismatch and the ones that do not.
I am using 2019.1.3 CE.
Please sign in to leave a comment.
Please share a sample project and provide the exact steps to reproduce this issue: https://uploads.services.jetbrains.com/.
I'm not sure that is feasible.
Let me ask a possibly related question. What determines the libraries/modules that are displayed in the Project list and the Project Files list? I find that some dependencies are listed and some are not. In particular, the library that is having the problem is not shown in either list.
See https://www.jetbrains.com/help/idea/creating-and-managing-modules.html#working-with-module-dependencies.
That does not answer my question. I know what modules are and how to create dependencies.
> What determines the libraries/modules that are displayed in the Project list and the Project Files list?
All the libraries present in the module dependencies will be listed in the project view External Libraries node. All the modules listed in the Project Structure | Modules dialog will be listed in the Project view.
If it's not what you've asked for, please clarify the question.
I do not have an External Libraries node in the Project view.
What I see are 8 modules, one of which is the primary module of the project and other 7 appear to be randomly selected from the modules that are direct or indirect dependencies of the primary module (and which ultimately are dependent upon libraries).
Packages view has an option to hide libraries: https://i.imgur.com/yDp5p3h.png .
Project view always shows the libraries: https://i.imgur.com/S3QIy2m.png.
Project view will show all the modules present in the project: https://www.jetbrains.com/help/idea/modules.html .
I think I have an explanation for the missing modules. The ones that are missing are the ones with no <content> element. I suppose that is not kosher.
I don't have an explanation for the missing libraries and the missing External Libraries node.
Probably this has nothing to do with the original issue.
I'm afraid, the provided information is not enough to help with your problem. A sample project to reproduce the issue would be appreciated.
Is there a breakpoint I can set that would shed some light on why it thinks there is a mismatch?
You can get Java debugger logs per https://intellij-support.jetbrains.com/hc/en-us/articles/207241125.
I don't see anything in log related to this issue. No mention of this file, decompiling, etc.
I think I may have figured it out. The source code refers to a nested class using the name of a subclass of the enclosing class. The decompiled code refers to the nested class using the name of its enclosing class. It is the same (nested) class, but with different names.