2013-03-19 3 views
2

나는 D3.js로 SVG를 렌더링하기 위해 자바 응용 프로그램에서 과 Rhino를 실행하려고합니다.Java 응용 프로그램의 Envjs 및 Rhino - env.rhino.js를 찾을 수있는 곳?

지금까지 Rhino를 사용하여 더 작은 함수를 평가할 수 있었지만 envjs를 설정할 때 문제가 시작됩니다. 가장 중요한 것은 envjs에 대한 유일한 자습서가 env.rhino.js라는 파일에 대해 이야기한다는 것입니다. 그러나 나는 그것을 어디에서 발견해야할지 모른다.

아무도 도와 줄 수 있습니까?

은 (예, 구글은 어떤 결과를 보여주고 있지만 공식적으로 코뿔소 또는 envjs에 속하는되지 않음)

+0

의 문자열 결과를 얻을. 다운로드는 [envjs 다운로드 페이지] (http://www.envjs.com/release/envjs-1.2)의 오른쪽에 있습니다. – padmalcom

답변

1

먼저, env.rhino.js를 다운로드 :이 조합은 간단한 테스트를 위해 작동합니다 발견.

다음, 코뿔소 인스턴스를 시작하고로드하기 위해 자바 코드를 사용 Env.js :

이제
import org.mozilla.javascript.Context; 
import org.mozilla.javascript.tools.shell.Global; 
import org.mozilla.javascript.tools.shell.Main; 

Context cx = Context.enter(); 
Global scope = new Global(cx); 
cx.setOptimizationLevel(-1); 
cx.setLanguageVersion(Context.VERSION_1_5); 

당신이 (절대 파일 시스템 경로를 사용하여)

Main.processFile(cx, scope, ABSOLUTE_PATH_TO_SOME_JAVASCRIPT_FILE); 
을 자바 스크립트 파일을로드하고 실행할 수 있습니다

그리고/또는 자바 스크립트 코드를 평가하고 내가 나 자신을 발견

(String)cx.evaluateString(scope, "alert('Its WORKING!')", "js", 1, null); 
0

나는이 시도했지만 아주 멀리 갈 수 없었다. 나는 또한 서버 측에서 SVG를 생성하고 싶다. 요청은 java (내 경우에는 Glassfish)에서 시작한다. 당신이 할 수있는 유일한 방법은 jsdom & Node.js입니다. 나는 이것을 성공적으로 할 수있다. 안타깝게도 Node.js + jsdom을 제외하고는 이렇게 할 수있는 다른 방법이없는 것 같습니다.

일단 작동 시키면 Node.js를 SVG 생성 요청으로 많이로드하려고하면 커다란 문제가 있습니다.

+0

감사합니다 Aejaz, 저는 서버 측에서 Javascript SVG 생성을 사용하지 않았습니다. 대신 정적 링크를 SVG를 표시하는 내부 생성 페이지로 반환합니다. 그럼에도 불구하고 Node.js를 사용하여 SVG를 생성하는 방법에 대한 간단한 기사를 작성한다면 3d.js 커뮤니티에 큰 호응을 얻으실 수 있습니다! :) – padmalcom

2

나는이 답변이 매우 늦었다 고 알고있다. 그러나 나는 똑같은 일을하고 싶고 똑같은 문제가있다. 아마도 다음 일이 도움이 될 것이다. env-js에 github 포크의 hundrets 중 어느 것이 일을 할 것인지를 알아내는 데는 시간이 걸렸습니다.

git clone https://github.com/thatcher/envjs-site.git 
#note the different fork! 
wget https://raw.github.com/thatcher/env-js/master/src/dom/sizzle.js 
wget http://d3js.org/d3.v3.min.js 

java -jar dist/env-js-1.1.jar 
load("lib/env.rhino.js"); 
load("sizzle.js"); 
load("d3.v3.min.js"); 
d3.select("body").append("svg").selectAll("line").data([1,2]).enter().append("line").attr("x1", function(d){return d;}); 
document.innerHTML; 

<html><head/><body><line/><line/><svg xmlns="http://www.w3.org/2000/svg"><line x1="1"/><line x1="2"/></svg></body><line/><line/></html> 

J

+0

이것은 2015 년 현재 정답입니다. – mxro