Inicie o jsdom do Rhino no Java
Estou acompanhandoesta resposta:
Eu consegui correr simplesJavaScript
código deRhino Engine em Java.
Mas quando se trata deD3.js, por exemplo:
var svg = d3.select("body").append("svg")
como você pode verd3
requer que o DOM esteja disponível em primeiro lugar.
Então, por esse motivoJSDOM deveria ser a solução.
MasJSDOM
passa a depender derequirejs
DeRequireJs
local:
or.js O arquivo permite executar o otimizador e executar módulos no Node,Rinoceronte ou xpcshell.
Então meu código Java Rhino fica assim:
FileReader fr1 = new FileReader("lib/r.js");
FileReader fr2 = new FileReader("lib/jsdom.js");
engine.eval(fr1);
engine.eval(fr2);
Mas, por enquanto, acabo tendo um erro como este:
ReferenceError: "argumentos" não está definido.
Então eu acheiesta boa resposta:
Então meu código fica assim:
cx.evaluateReader(sharedScope, new FileReader("lib/r.js"), "require", 1, null);
cx.evaluateReader(sharedScope, new FileReader("lib/loader.js"), "loader", 1, null);
cx.evaluateReader(sharedScope, new FileReader("lib/jsdom.js"), "loader", 1, null);
Erro: o nome do módulo "fs" ainda não foi carregado
Isso basicamente significa quejsdom.js
em si está se referindo a:
var fs = require('fs');
var path = require('path');
var URL = require('url');
Então, parece que eu só preciso baixar todos eles.
Masfs - é sobreSistema de arquivo. Isso significa que depende dos NodeJsnativo implementação. O que não é bom para minha tentativaestar no java comum e no lado js simples.
Atualizar:
Por enquanto estou fazendo minha pesquisa nessa direção:
https://github.com/nodyn/jvm-npm
http://nodyn.io/
A questão é: Como posso carregar o JSDOM no Rhino para permitir que o D3.js gere meu SVG?
Mais uma vez: Java Rhino -> D3.JS -> JSDOME -> RequireJS ->FS => SVG?
"Ou" : Como o Mozilla Rhino pode usar o módulo nodejs "fs"?
Eu sei que posso usarPhantomJS, mas estou procurando ou algo pegajoso em Java. Mais leve, sem o lançamento de processos externos envolvidos.