Java varargs Compilation problem

View: New views
3 Messages — Rating Filter:   Alert me  

Java varargs Compilation problem

by Paul Nolan :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Some parts of this message have been removed. Learn more about Nabble's security policy.

Weird one here guys,

 

Using JDK:

 

java version "1.6.0_16"

Java(TM) SE Runtime Environment (build 1.6.0_16-b01)

Java HotSpot(TM) Client VM (build 14.2-b01, mixed mode, sharing)

 

To the problem:

 

I am using janino-2.5.0 and I am noticing that the ClassBodyEvaluator is not compiling Java varargs anymore J It definitely compiled under JDK 5 and I think it did previously under JDK 6 but of course I know that makes no sense.

 

If I have a function:

 

    public static boolean inListStripLeadingZeros(String search, String ... string) { // note var args at end

 

The following code is passed to ClassBodyEvaluator (along with more code):

 

if (MyFunctions.inListStripLeadingZeros(record.tariff_Class,"527", "777", "3027", "619", "869", "3169", "628", "878", "3128", "567", "817", "3067", "502", "752", "3002", "503", "504", "505", "506", "605", "564", "565", "526", "528", "533", "753", "754", "755", "756", "855", "814", "815", "778", "3003", "3004", "3005", "3006", "3105", "3064", "3065", "675", "557", "521", "597", "684", "685", "501", "564", "565", "925", "807", "771", "934", "935", "751", "814", "815")) {

    return true;

}

 

This is the error I am now getting with Janino 2.5.0 and JDK 1.6:

 

No applicable constructor/method found for actual parameters "java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String"; candidates are: "boolean MyFunctions.inListStripLeadingZeros(java.lang.String, java.lang.String[])"

 

Has this been fixed in later version? I scanned the changelogs but could not find it.

 

Thanks.


Re: Java varargs Compilation problem

by Matt Fowles :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Paul~

Not sure if Janino used to support var-args or not.  If it used to, then this is likely a regression.  Regardless, you can work around the problem by generating code that directly calls the String[] variant.

Matt

On Fri, Oct 23, 2009 at 5:52 PM, Paul Nolan <paul.nolan@...> wrote:

Weird one here guys,

 

Using JDK:

 

java version "1.6.0_16"

Java(TM) SE Runtime Environment (build 1.6.0_16-b01)

Java HotSpot(TM) Client VM (build 14.2-b01, mixed mode, sharing)

 

To the problem:

 

I am using janino-2.5.0 and I am noticing that the ClassBodyEvaluator is not compiling Java varargs anymore J It definitely compiled under JDK 5 and I think it did previously under JDK 6 but of course I know that makes no sense.

 

If I have a function:

 

    public static boolean inListStripLeadingZeros(String search, String ... string) { // note var args at end

 

The following code is passed to ClassBodyEvaluator (along with more code):

 

if (MyFunctions.inListStripLeadingZeros(record.tariff_Class,"527", "777", "3027", "619", "869", "3169", "628", "878", "3128", "567", "817", "3067", "502", "752", "3002", "503", "504", "505", "506", "605", "564", "565", "526", "528", "533", "753", "754", "755", "756", "855", "814", "815", "778", "3003", "3004", "3005", "3006", "3105", "3064", "3065", "675", "557", "521", "597", "684", "685", "501", "564", "565", "925", "807", "771", "934", "935", "751", "814", "815")) {

    return true;

}

 

This is the error I am now getting with Janino 2.5.0 and JDK 1.6:

 

No applicable constructor/method found for actual parameters "java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String"; candidates are: "boolean MyFunctions.inListStripLeadingZeros(java.lang.String, java.lang.String[])"

 

Has this been fixed in later version? I scanned the changelogs but could not find it.

 

Thanks.



Re: Java varargs Compilation problem

by Paul Nolan :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Thanks Matt, I was mistaken - this never compiled, hence the confusion.

best,

- Paul.

On Mon, Oct 26, 2009 at 3:07 PM, Matt Fowles <matt.fowles@...> wrote:
Paul~

Not sure if Janino used to support var-args or not.  If it used to, then this is likely a regression.  Regardless, you can work around the problem by generating code that directly calls the String[] variant.

Matt


On Fri, Oct 23, 2009 at 5:52 PM, Paul Nolan <paul.nolan@...> wrote:

Weird one here guys,

 

Using JDK:

 

java version "1.6.0_16"

Java(TM) SE Runtime Environment (build 1.6.0_16-b01)

Java HotSpot(TM) Client VM (build 14.2-b01, mixed mode, sharing)

 

To the problem:

 

I am using janino-2.5.0 and I am noticing that the ClassBodyEvaluator is not compiling Java varargs anymore J It definitely compiled under JDK 5 and I think it did previously under JDK 6 but of course I know that makes no sense.

 

If I have a function:

 

    public static boolean inListStripLeadingZeros(String search, String ... string) { // note var args at end

 

The following code is passed to ClassBodyEvaluator (along with more code):

 

if (MyFunctions.inListStripLeadingZeros(record.tariff_Class,"527", "777", "3027", "619", "869", "3169", "628", "878", "3128", "567", "817", "3067", "502", "752", "3002", "503", "504", "505", "506", "605", "564", "565", "526", "528", "533", "753", "754", "755", "756", "855", "814", "815", "778", "3003", "3004", "3005", "3006", "3105", "3064", "3065", "675", "557", "521", "597", "684", "685", "501", "564", "565", "925", "807", "771", "934", "935", "751", "814", "815")) {

    return true;

}

 

This is the error I am now getting with Janino 2.5.0 and JDK 1.6:

 

No applicable constructor/method found for actual parameters "java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String"; candidates are: "boolean MyFunctions.inListStripLeadingZeros(java.lang.String, java.lang.String[])"

 

Has this been fixed in later version? I scanned the changelogs but could not find it.

 

Thanks.