b73: IllegalAccessError: tried to access class java.util.stream.BaseStream
Remi Forax
forax at univ-mlv.fr
Wed Jan 16 11:21:05 PST 2013
On 01/16/2013 04:51 PM, Paul Sandoz wrote:
> On Jan 16, 2013, at 4:17 PM, Dmitry Bessonov <dmitry.bessonov at oracle.com> wrote:
>
>> import java.util.Arrays;
>> import java.util.stream.Stream;
>>
>> public class IllegalAccessErrorTest {
>>
>> public static void main(String[] args) {
>>
>> Stream stream = Arrays.asList("a", "b").stream();
>> System.err.println("iterator = " + stream.iterator());
>> Iterable iterable = stream::iterator;
>> System.err.println("iterable = " + iterable);
>> }
>> }
>>
>> when compiled/run on b73 the output is:
>>
>>
>> iterator = java.util.stream.ReferencePipeline$6 at 3256a5
>> Exception in thread "main" java.lang.IllegalAccessError: tried to access
>> class java.util.stream.BaseStream from class IllegalAccessErrorTest
>> at IllegalAccessErrorTest.main(IllegalAccessErrorTest.java:10)
>>
> Interesting. BaseStream was made package private.
>
> Looks like a bug in the runtime translation of the method reference.
No, it's compiler bug, if you use javap -verbose you can see that the
class file uses BaseStream::Iterator instead of Stream::iterator as
argument of the bootstrap method.
>
> Paul.
Rémi
>
>
>> with b72 no exceptions are seen
>>
>> -Dmitry
>>
>>
>
More information about the lambda-dev
mailing list