2010-06-02 2 views
1

큰 응용 프로그램을 실행 중이며 Java 3D가 포함 된 작은 부분이 있지만 문제는 많은 사용자가 코드를 사용해야한다는 것입니다. 그러나 응용 프로그램을 실행하기 위해 모든 사람이 Java 3D를 설치하는 것은 실용적이지 않습니다. 응용 프로그램의 해당 섹션을 사용할 수도 없습니다.Java3D를 설치할 필요가없는 방식으로 Java3D를 내장 할 수 있습니까?

시스템에 설치하지 않고 Java 3D를 프로젝트에 포함 시키려면 추가 병을 컴파일하거나 일부 경로를 변경하는 것이 가능합니까? 또는 수동으로 dll을 수동으로 포함 할 수 있습니까?

+1

Java3D jar 파일이 'CLASSPATH '(응용 프로그램의'manifest.mf'에서 상대 경로로 지정할 수 있습니다) ddls가 PATH (응용 프로그램 jar가 자동으로 작동해야하는 것과 같은 디렉토리)에 있으면 모든 것이 잘됩니다. Java3D 클래스를 응용 프로그램 jar에 삽입 할 수도 있습니다. –

+1

Java3D는 버전 1.6.0 이후부터 네이티브 라이브러리를 명시 적으로 조작하지 않고도 타사 라이브러리로 사용할 수 있습니다. JOGL을 독점적으로 사용하기 때문에 개발 컴퓨터에 설치하는 JAR 파일과 동일한 JAR 파일 만 제공하면됩니다. jogamp.org/wiki/index.php/Downloading_and_installing_Java3D – gouessej

답변

3

java3d의 데모는 가능하다는 것을 증명합니다. 프로젝트 배포에 필요한 jar 파일 만 포함하면됩니다.

+0

Windows에서 dll을 잊지 마세요. , 그것 없이는 폭발 할 것이다. –

+1

@Perce Java3D 1.6.0에서는 더 이상 true가 아닙니다. JOGL 2 네이티브 라이브러리는 여러 JAR에서 별도로 사용할 수 있습니다. http://jogamp.org/wiki/index.php/Downloading_and_installing_Java3D JOGL 2 네이티브 라이브러리는 별도로 사용할 수 있습니다. 기본적으로 JOGL은 아키텍처를 감지하고 올바른 JAR을 선택하며 적절한 기본 라이브러리를 추출 할 수 있습니다. – gouessej

0

예, 가능합니다. java3d 사이트에서 필요한 jar 및 기본 라이브러리를 가져와야합니다. java3d 데모에서 가져 왔지만 xml 실행 디스크립터 파일을 통해 파기해야합니다.

.so/.dll 파일에 연결할 때 가장 어려울 곳이 있습니다. 이것은 일반적으로 앱이 시작되기 전에 classpath에 지정되어 있지만 앱이 시작될 때까지 사용중인 플랫폼을 모르기 때문에 catch22입니다.

두 가지 가능한 솔루션이 있습니다. 1. 실제 응용 프로그램에 플랫폼을 감지하고 적절한 라이브러리가 지정된 새 jvm을 설정하는 간단한 클래스로 프로그램을 부트 스트랩합니다. 2. 라이브러리를 동적으로로드합니다 (실제로이 메소드를 기본 구현에 사용하지는 않았지만 가능하지 않은 이유는 없습니다).

불행히도 어느 방법도 대단히 직설적입니다.

+0

입력 해 주셔서 감사합니다. Jars and Dlls로 할 수있는 일을 볼 것입니다 ...지금 시스템을 J3D가 없으면 J3D 섹션에 액세스하고 예외를 throw하면 컴파일러 오류가 발생하거나 충돌하지 않고 바이너리에서 응용 프로그램을 빌드하고 실행할 수 있습니다. – Kyle

+0

Hey Kyle, Java 래퍼를 링크했지만 원시 코드를 연결하지 않았기 때문에 그 때문입니다. 따라서 JVM은 원시 코드를로드 할 때까지 (첫 번째 사용시) 폭발하지 않습니다. – Jim

+0

JAR에서 적절한 네이티브 라이브러리를 추출하여로드 할 수있는 JOGL에만 의존하기 때문에 Java3D 1.6.0부터 더 이상이 복잡한 메소드는 필요하지 않습니다. – gouessej

0

나는 클래스 패스에 jar 파일을 추가하고 적절한 dll 파일을 "working"디렉토리에 놓기 만하면 문제없이 (그리고 많은 사용자들이 Windows 운영체제를 테스트 함으로서)이 작업을 수행했다. 시작되었습니다. 하나의 캐치는 두 개의 박쥐 파일을 가져야한다는 것입니다. 하나는 32 비트이고 다른 하나는 64 비트입니다. 각 bat 파일은 실행중인 Java 버전 (32/64 비트)에 따라 다른 jar가 필요하기 때문에 적절한 dll을 j3dcore-ogl.dll로 복사/이름을 바꿉니다. .bat 파일

예 :

델 j3dcore-ogl.dll 복사 j3dcore-OGL-64.dll j3dcore-ogl.dll 자바 -Xmx2048m -classpath ./YourJar.jar;./lib/tinylaf .jar; ./lib/j3dcore.jar; ./lib/j3dutils.jar./lib/ vecmath.jar your.package.MainClass @pause

+0

Java3D 1.6.0에서는 j3dcore-ogl DLL을 더 이상 사용할 수 없습니다. 답변을 편집하십시오. Java3D <= 1.5.2에서만 작동합니다. – gouessej

관련 문제