没有 console
    https://docs.oracle.com/javase/8/docs/api/javax/script/ScriptEngineManager.html

    1. package demo;
    2. import javax.script.ScriptEngine;
    3. import javax.script.ScriptEngineManager;
    4. import javax.script.Bindings;
    5. import javax.script.ScriptContext;
    6. import javax.script.Invocable;
    7. import javax.script.ScriptException;
    8. import javax.script.ScriptEngine;
    9. import java.io.*;
    10. import java.util.*;
    11. import static java.lang.System.*;
    12. public class JavaTest {
    13. public static void main(String[] args) throws Exception {
    14. ScriptEngineManager mgr = new ScriptEngineManager();
    15. ScriptEngine engine = mgr.getEngineByName("JavaScript");
    16. String foo = "4+2";
    17. String regular = "function formatData(data) {return data;}";
    18. try {
    19. System.out.println(engine.eval(foo));
    20. engine.eval(regular);
    21. Map<String, String> map = new HashMap<String,String>();
    22. map.put("a", "b");
    23. if (engine instanceof Invocable) {
    24. Invocable invoke = (Invocable) engine;
    25. Map result = (HashMap) invoke.invokeFunction(
    26. "formatData",
    27. map
    28. );
    29. System.out.println(result);
    30. } else {
    31. System.out.println("error");
    32. }
    33. } catch(ScriptException e) {
    34. System.out.println(e.getMessage());
    35. }
    36. }
    37. // public static void main(String args[]) {
    38. // System.out.println("start");
    39. // String regular="function formatArrayList(column, data) {\n" +
    40. // " var __data = [];\n" +
    41. // " \n" +
    42. // " data.forEach(function (item, index) {\n" +
    43. // " __data.push([]);\n" +
    44. // " column.forEach(function(key) {\n" +
    45. // " __data[index].push(item[key]);\n" +
    46. // " }) \n" +
    47. // " });\n" +
    48. // "\n" +
    49. // " return __data;\n" +
    50. // "}\n" +
    51. // "\n" +
    52. // "function formatJSON(column, data) {\n" +
    53. // " var __data = [];\n" +
    54. // " \n" +
    55. // " data.forEach(function (item, index) {\n" +
    56. // " __data.push({});\n" +
    57. // " column.forEach(function(key) {\n" +
    58. // " __data[index][key] = item[key];\n" +
    59. // " }) \n" +
    60. // " });\n" +
    61. // "\n" +
    62. // " return __data;\n" +
    63. // "}\n" +
    64. // "\n" +
    65. // "function formatData(data) {\n" +
    66. // "\n" +
    67. // " \n" +
    68. // " return {\n" +
    69. // " column: [\"a\", \"b\", \"c\"],\n" +
    70. // " data: formatArrayList([\"a\", \"b\", \"c\"], [data]),\n" +
    71. // " json: formatJSON([\"a\", \"b\", \"c\"], [data])\n" +
    72. // " }\n" +
    73. // "}\n" +
    74. // "\n" +
    75. // "formatData({\n" +
    76. // " a: 1,\n" +
    77. // " b: 1,\n" +
    78. // " c: 1,\n" +
    79. // " c1: [{a:1, b:1, c: 1}]\n" +
    80. // "});";
    81. //
    82. // ScriptEngine engine = new ScriptEngineManager().getEngineByName("JavaScript");
    83. // try {
    84. // engine.eval(regular);
    85. // if (engine instanceof Invocable) {
    86. // Invocable invoke = (Invocable) engine;
    87. // Object result = invoke.invokeFunction(
    88. // "formatData",
    89. // "{\n" +
    90. // " a: 1,\n" +
    91. // " b: 1,\n" +
    92. // " c: 1,\n" +
    93. // " c1: [{a:1, b:1, c: 1}]\n" +
    94. // "}"
    95. // );
    96. // System.out.println(result);
    97. // } else {
    98. // System.out.println("error");
    99. // }
    100. // } catch (Exception e) {
    101. // System.out.println("表达式runtime错误:" + e.getMessage());
    102. // }
    103. // System.out.println("end");
    104. // }
    105. }