2011-01-10 5 views
4

ScriptEngine을 사용하여 일부 자바 스크립트를 처리하고 내 컴퓨터에서 제대로 작동하는 프로젝트가 있지만 프로젝트의 jar 파일을 서버에 보내면 서버의 JVM에 Rhino가 빌드되어 있지 않음을 발견했습니다. -in, 널 (null)을 반환하면 코드는 내가 코뿔소의 다운로드 페이지로 갔다Rhino가 누락 된 JVM Rhino

new ScriptEngineManager().getEngineByName("javascript"); 

이 가장 최근 버전을 호출 할 때, 그리고 그것에서하는 js.jar를 추출 프로젝트에 항아리를 추가,하지만 여전히이 같은 문제.

+0

꽤 이상합니다. 서버가 지원하는 JVM 버전은 무엇입니까? 어쨌든 Rhino 항아리를 추가하는 것만으로는 도움이되지 않습니다. Sun 버전은 다른 방식으로 초기화됩니다. Rhino를 관리하지 않는 JDK6 VM을 어디에서 얻을 수 있는지 모르겠습니다. – Pointy

+0

Andrei, 자세한 내용이 필요합니다. 서버 (Tomcat, JBoss, Apache 자체)에서 실행되는 것은 무엇입니까? 이것에 대한 일반적인 이유는 클래스 패스와 관련이 있으며 프로젝트에 jar 파일을 추가 한 방법입니다. –

+0

서버 : FreeBSD 8.1-STABLE FreeBSD 8.1-STABLE Java : Diablo Java (TM) SE 런타임 환경 (빌드 1.6.0_07-b02) Diablo Java HotSpot (TM) 64 비트 서버 VM (빌드 10.0-b23, 혼합 모드) 프로젝트를 개발할 때 이클립스를 사용하고 있습니다. 프로젝트> 속성> Java 빌드 경로> 라이브러리> jar 추가 –

답변

10

JavaScript 엔진은 Sun/Oracle JDK에만 포함되어 있습니다. IBM J9 또는 Oracle JRockit (서버에있을 가능성이 매우 높음) 또는 Sun/Oracle JDK를 사용하지 않고 Sun/Oracle JRE (서버에서 실행 가능성이 높은 경우)와 같은 다른 Java 구현을 사용하는 경우 자바 스크립트 엔진을 사용하지 마십시오.

Sun의 전체 JDK를 사용해야합니다.

JDK6과 함께 제공되는 JavaScript 엔진은 이 아니며이 아닙니다. Rhino는 몇 년 전 출시 된 Rhino 버전의 철저히 삭제 된 버전입니다. 특히 컴파일러가 누락되어 성능이 떨어질 수 있습니다.

Rhino의 더 이상 사용되지 않는 릴리스가 발견되면 API가 Rhino와 JDK6 JavaScript 엔진 () 사이에 반드시 호환되는 것은 아닙니다. Rhino를 배포에 사용하려면 개발시에도 Rhino를 사용하는 것이 좋습니다.

마지막으로 중요한 것은 Eclipse 프로젝트 파일에 항목을 작성했기 때문에 서버의 클래스 경로가 마술처럼 바뀌는 것은 아닙니다. 모든 클래스 경로가 제대로 설정되어 있는지 확인해야합니다. FreeBSD에 대한 eperience가 없지만 패키지 관리 시스템 (이 경우 FreeBSD 포트)이 적어도 부분적으로는 port install rhino 이후에 처리 될 것이라 확신합니다.

+0

+1 우와 !! 그게 많은 정보. 나는 그것을 좋아한다. – Favonius

+0

JDK6 버전의 rhino에서 누락되거나 다른 내용에 대한 정확한 설명은 다음에서 찾을 수 있습니다. http://docs.oracle.com/javase/6/docs/technotes/guides/scripting/programmer_guide/index.html#jsengine – LeoR