Public bug reported:

I have a small task that's done in Java's javax.script engine for
JavaScript, which I understand was based on Rhino in Java SE 6 and 7,
swapped out for Nashorn in Java SE 8.  The code fails to run in
openjdk-6 (38) and openjdk-7(95) - both i386 and amd64- but *only* in
Ubuntu.  A colleague has tested the exact same releases of Java in
Redhat without the error.  The code, however, works fine in openjdk-8 in
both Ubuntu and Redhat.

The main issue seems to be that the + operator between two strings no
longer produces a string result, it produces a
sun.org.mozilla.javascript.ConsString instead. That doesn't behave as a
regular String (it lacks a replace method, passing it as a parameter to
a Java method expecting String produces method not found because the
signature is wrong, etc.) If I edit and change every string expression
s1 + s2 to be String(s1 + s2) then I have a usable string again.

Here is some code to reproduce the error:
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;

public class jstest {
  public static void main(String[] args) throws Exception {
    ScriptEngineManager mgr = new ScriptEngineManager();
    ScriptEngine testEngine =
      mgr.getEngineByMimeType( "application/javascript");

    String testScript =
"    var key = 'something';\n" +
"    var tpr = 'echo';\n" +
"    var pb = new java.lang.ProcessBuilder(tpr, '--', '--'+key);\n" +
"    pb.start().waitFor();\n";

    System.out.println(testEngine.eval(testScript)); // success prints 0
  }
}

Running in Ubuntu gives this error:
javax.script.ScriptException: sun.org.mozilla.javascript.EvaluatorException: 
Java constructor for "java.lang.ProcessBuilder" with arguments 
"string,string,sun.org.mozilla.javascript.ConsString" not found.

Any ideas what's going wrong and why only in Ubuntu?

Version details:
Ubuntu 14.04.4 LTS
openjdk-6-jdk - 6b38-1.13.10-0ubuntu0.14.04.1
openjdk-7-jdk - 7u95-2.6.4-0ubuntu0.14.04.1

** Affects: openjdk-7 (Ubuntu)
     Importance: Undecided
         Status: New

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1553654

Title:
  In JavaScript engine, some String operations produce ConsString
  instead, type errors at runtime

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/openjdk-7/+bug/1553654/+subscriptions

-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to