Package Bugginess

Robert J. Saulnier robert.j.saulnier at gmail.com
Tue Apr 16 10:03:36 PDT 2013


I'm running b83 on Windows and tried b85 this morning and it still works on
Windows.


On Tue, Apr 16, 2013 at 12:17 AM, Robert J. Saulnier <
robert.j.saulnier at gmail.com> wrote:

> Ok, I have a class with a print method in one package, and a subclass with
> an overloaded print method in another package. I know, bad idea, but I did
> it for testing purposes.. yeah that sounds plausible.
>
> So this works fine on Windows 7 with Lambda build 84 (maybe 85, I'll
> confirm tomorrow at work), but failed when I tried it on Linux with Lambda
> build 84.
>
> The code below spits out the following stack trace:
>
> Exception in thread "main" java.lang.BootstrapMethodError: call site
> initialization exception
> at java.lang.invoke.CallSite.makeSite(CallSite.java:298)
>  at
> java.lang.invoke.MethodHandleNatives.linkCallSite(MethodHandleNatives.java:294)
> at lambdabug.sub.LambdaBug.print(LambdaBug.java:18)
>  at lambdabug.sub.LambdaBug.main(LambdaBug.java:12)
> Caused by: java.lang.NullPointerException
> at java.lang.invoke.MethodHandleInfo.<init>(MethodHandleInfo.java:53)
>  at
> java.lang.invoke.AbstractValidatingLambdaMetafactory.<init>(AbstractValidatingLambdaMetafactory.java:104)
> at
> java.lang.invoke.InnerClassLambdaMetafactory.<init>(InnerClassLambdaMetafactory.java:108)
>  at
> java.lang.invoke.LambdaMetafactory.metaFactory(LambdaMetafactory.java:188)
> at java.lang.invoke.CallSite.makeSite(CallSite.java:283)
>  ... 3 more
>
> Is this known behaviour?
>
>
> package lambdabug;
>
> public class SuperBug {
>
>     protected void print(Integer num) {
>         System.out.println(num);
>     }
> }
>
>
> package lambdabug.sub;
>
> import lambdabug.SuperBug;
> import java.util.Arrays;
> import java.util.List;
>
> public class LambdaBug extends SuperBug {
>
>     public static void main(String[] args) {
>         LambdaBug bug = new LambdaBug();
>
>         bug.print("");
>     }
>
>     private void print(String str) {
>         List<Integer> nums = Arrays.asList(1, 2, 3);
>
>         nums.forEach(this::print);
> //        nums.forEach(num -> print(num));
>     }
> }
>
>


More information about the lambda-dev mailing list