RFR: 8298065: Provide more information in message of NoSuchFieldError [v4]
    Coleen Phillimore 
    coleenp at openjdk.org
       
    Thu Dec 22 21:30:53 UTC 2022
    
    
  
On Thu, 22 Dec 2022 19:35:22 GMT, Matias Saavedra Silva <matsaave at openjdk.org> wrote:
>> A java.lang.NoSuchFieldError is typically thrown when you remove a field but do not recompile the client code that calls the field. However, the message does not indicate in which class the field was not found. 
>> 
>> Additionally, java.lang.NoSuchFieldError is thrown if the field is still present but the types are incompatible. For example, if a field is first defined as int, and later changed to long without recompiling the client. The error text has been expanded to include the class name and field type. Verified with tier 1-4 tests.
>> 
>> Old output:
>> `Exception in thread "main" java.lang.NoSuchFieldError: x
>>         at NoSuchFieldMain.main(NoSuchFieldMain.java:3)`
>> Example output:
>> `Exception in thread "main" java.lang.NoSuchFieldError: Class Other does not have field 'int x'
>>         at NoSuchFieldMain.main(NoSuchFieldMain.java:3)`
>> 
>> The added test considers different types of fields like primitives, arrays, and references.
>
> Matias Saavedra Silva has updated the pull request incrementally with one additional commit since the last revision:
> 
>   Improved style and cleanup
test/hotspot/jtreg/runtime/linkResolver/FieldName1.jasm line 24:
> 22:  */
> 23: 
> 24: super public class FieldName
You should put the Java code that produced this jasm here as a comment.
test/hotspot/jtreg/runtime/linkResolver/NoSuchFieldOutputTest.java line 53:
> 51:       s = s + "\nz = " + z;
> 52:       throwTestException("Did not throw NoSuchFieldError", s);
> 53:     } catch (NoSuchFieldError nsfe) {
You could put each field access in a try block and remove all the fields in the second jasm file, so you can test for all the messages specifically.  Although the pattern compiler is cool.
-------------
PR: https://git.openjdk.org/jdk/pull/11745
    
    
More information about the hotspot-runtime-dev
mailing list