One problem still outstanding - Was: Two Problem with Method Reference
Rémi Forax
forax at univ-mlv.fr
Tue Jan 11 00:08:57 PST 2011
I think that the mlvm repository is not uptodate, or was not up to
date when stephen creates its build.
The code looks for MethodHandle.invoke but this method doesn't exist
anymore because
it was renamed to invokeExact.
Rémi
Le 11/01/2011 06:06, Howard Lovatt a écrit :
> Using the latest version from the repository (854:89631f9e86b7) on
> build 1.7.0-internal-fastdebug-stephen_2010_12_23_20_53-b00. The
> following:
>
> final ActionListener al4 = Main#print( ActionEvent );
> b1.addActionListener( al4 );
> b1.doClick();
>
> private static void print( final ActionEvent notUsed ) {
> out.println( "Main.print method called" );
> }
>
> Gives:
>
> Exception in thread "main" java.lang.InternalError: JVM cannot find
> invoker for (ActionEvent)void
> at sun.dyn.Invokers.exactInvoker(Invokers.java:74)
> at sun.dyn.Invokers.genericInvoker(Invokers.java:82)
> at java.dyn.MethodHandle.invokeWithArguments(MethodHandle.java:420)
> at java.dyn.MethodHandle.invokeVarargs(MethodHandle.java:468)
> at com.sun.runtime.ProxyHelper$1.invoke(ProxyHelper.java:61)
> at $Proxy0.actionPerformed(Unknown Source)
> at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2019)
> at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2342)
> at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
> at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
> at javax.swing.AbstractButton.doClick(AbstractButton.java:376)
> at javax.swing.AbstractButton.doClick(AbstractButton.java:356)
> at lambdas.Main.lambdas(Main.java:97)
> at lambdas.Main.main(Main.java:23)
>
>
> ---------- Forwarded message ----------
> From: Howard Lovatt<howard.lovatt at gmail.com>
> Date: 27 December 2010 17:14
> Subject: Two Problem with Method Reference
> To: lambda-dev<lambda-dev at openjdk.java.net>
>
>
> Hi,
>
> I have found a coup[le of problems with the latest version of JDK 7 in
> the Mercurial repository. For:
>
> 95: final ActionListener al4 = Main#print( ActionEvent );
> 96: b1.addActionListener( al4 );
> 97: b1.doClick();
>
> and:
>
> private static void print( final ActionEvent notUsed ) {
> out.println( "Main.print method called" );
> }
>
> It compiles OK, but when run I get:
>
> Exception in thread "main" java.lang.InternalError: JVM cannot find
> invoker for (ActionEvent)void
> at sun.dyn.Invokers.exactInvoker(Invokers.java:74)
> at sun.dyn.Invokers.genericInvoker(Invokers.java:82)
> at java.dyn.MethodHandle.invokeWithArguments(MethodHandle.java:420)
> at java.dyn.MethodHandle.invokeVarargs(MethodHandle.java:468)
> at com.sun.runtime.ProxyHelper$1.invoke(ProxyHelper.java:61)
> at $Proxy0.actionPerformed(Unknown Source)
> at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2019)
> at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2342)
> at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
> at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
> at javax.swing.AbstractButton.doClick(AbstractButton.java:376)
> at javax.swing.AbstractButton.doClick(AbstractButton.java:356)
> at lambdas.Main.lambdas(Main.java:97)
> at lambdas.Main.main(Main.java:23)
>
> If I remove static from the method definition:
>
> private void print( final ActionEvent notUsed ) {
> out.println( "Main.print method called" );
> }
>
> Then when run I get:
>
> Exception in thread "main" java.dyn.WrongMethodTypeException: cannot
> convert to (Object)Object: print(Main,ActionEvent)void
> at java.dyn.MethodHandles.convertArguments(MethodHandles.java:1091)
> at java.dyn.MethodHandle.asType(MethodHandle.java:507)
> at java.dyn.MethodHandle.invokeWithArguments(MethodHandle.java:417)
> at java.dyn.MethodHandle.invokeVarargs(MethodHandle.java:468)
> at com.sun.runtime.ProxyHelper$1.invoke(ProxyHelper.java:61)
> at $Proxy0.actionPerformed(Unknown Source)
> at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2019)
> at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2342)
> at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
> at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
> at javax.swing.AbstractButton.doClick(AbstractButton.java:376)
> at javax.swing.AbstractButton.doClick(AbstractButton.java:356)
> at lambdas.Main.lambdas(Main.java:97)
> at lambdas.Main.main(Main.java:23)
>
> Hope everyone is having a good holiday (I count playing with JDK 7 as
> relaxation!),
>
> -- Howard.
>
>
>
More information about the lambda-dev
mailing list