JDK-8079470 : Misleading error message when explicit signature constructor is called with wrong arguments
  • Type: Bug
  • Component: core-libs
  • Sub-Component: jdk.nashorn
  • Affected Version: 9
  • Priority: P3
  • Status: Resolved
  • Resolution: Fixed
  • OS: generic
  • CPU: generic
  • Submitted: 2015-05-06
  • Updated: 2015-09-29
  • Resolved: 2015-05-06
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
JDK 8 JDK 9
8u60Fixed 9 b64Fixed
Description
var File = Java.type("java.io.File");
var f = new File['(String,String)']();


results in

x.js:2 TypeError: Java method [jdk.internal.dynalink.beans.SimpleDynamicMethod File java.io.File.java.io.File(String,String)] cannot be used as a constructor.

Actually, it is a constructor - just that number of actual arguments do not match signature.

Similar issue with explicit constructor selection via Native java package as well:


var Color = java.awt["Color(int,int,int)"]
var c = new Color(255, 255)

t.js:2 TypeError: Java method [jdk.internal.dynalink.beans.SimpleDynamicMethod Color java.awt.Color.java.awt.Color(int,int,int)] cannot be used as a constructor.