Hi Charlie,

not sure if it helps, but incidentally I currently have a change under
review [1] which chains the initial cause into NoClassDefFoundErrors.

If it helps you to track down the problem please feel free to mention that
on the review thread :)

Regards,
Volker

Charles Oliver Nutter <head...@headius.com> schrieb am Sa. 30. Juni 2018 um
03:03:

> To help illustrate a bit, here's a snippit of the code to create the
> allocator. It succeeds, but the allocator later throws NoClassDefFoundError.
>
> https://gist.github.com/headius/cce750221cf73df76cb7f7ce92c1a759
>
> - Charlie
>
> On Fri, Jun 29, 2018 at 8:00 PM, Charles Oliver Nutter <
> head...@headius.com> wrote:
>
>> Hello folks!
>>
>> I'm improving JRuby's support for instance variables-as-fields, which
>> involves generating a new JVM class with a field per instance variable in
>> the Ruby class.
>>
>> The construction process for these classes involves an implementation of
>> my "ObjectAllocator" interface, which is stored with the Ruby class.
>>
>> Previously, the generated classes also included a generated child class
>> that implenented ObjectAllocator appropriately. I was hoping to use
>> LambdaMetafactory to avoid generating that class, but I'm running into a
>> problem.
>>
>> Say we have a Ruby class with three instance variables. JRuby will
>> generate a "RubyObject3" class that holds those variables in their own
>> fields var0, var1, and var2. The process leading up to the bug goes like
>> this:
>>
>> * Generate the RubyObject3 class, in its own classloader that's a child
>> of the current one.
>> * Acquire a constructor handle for that class.
>> * Use that constructor with LambdaMetafactory.metafactory to produce an
>> allocator-creating call site.
>> * Invoke that call site to get the one allocator instance we need.
>>
>> Note that since the metafactory call requires a Lookup, I am providing it
>> one from the parent classloader.
>>
>> I am able to get through this process without error. However, when I
>> finally invoke the allocator, I get a NoClassDefFoundError and a stack
>> trace that ends at the allocator call.
>>
>> So...what am I doing wrong?
>>
>> - Charlie
>>
>
> _______________________________________________
> mlvm-dev mailing list
> mlvm-dev@openjdk.java.net
> http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev
>
_______________________________________________
mlvm-dev mailing list
mlvm-dev@openjdk.java.net
http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev

Reply via email to