Загрузка библиотеки javascript в javax.script? - PullRequest
0 голосов
/ 19 апреля 2010

Я хочу запустить Protovis javascript из Java и получить оцененный код SVG. Я использую javax.script. * Для запуска Javascript:

public static void EvalScript() throws Exception {
    ScriptEngineManager factory = new ScriptEngineManager();
    ScriptEngine engine = factory.getEngineByName("JavaScript");
    Object result = engine.eval("var vis = new pv.Panel().width(300).height(300)
        .add (pv.Line).data ([1,0.5, 0.1, 0.01, 0.001, 0.3, 0.2,0.1,1])
           .left (function () { return this.index * 30; })
           .bottom (function (d) { return d * 250; });
        vis.root.render();
        vis.scene[0].canvas.innerHTML;");         
    System.out.println(result);
}

Это будет жаловаться, потому что я никогда не загружал сам Protovis, как это обычно делается с

<script type="text/javascript" src="../protovis-r3.1.0.js"></script> 

Есть ли хороший способ, за исключением использования полного Javascript в команде eval (), для загрузки библиотеки при запуске Javascript через javax.script?

1 Ответ

1 голос
/ 19 апреля 2010

Ну, почему бы вам не загрузить весь сценарий и передать его eval()? Если вы хотите, чтобы контекст выполнения Javascript анализировал и интерпретировал библиотеку, то что-то должно сделать это. Вы, конечно, могли бы предоставить механизм для контекста сценария, который позволил бы самому сценарию выполнить эквивалент примера тега <script>, который вы дали, но в итоге это было бы точно так же.

Я не понимаю ваш комментарий о Rhino. Интерпретатор Javascript в JDK 1.6 это Rhino.

...