2009-12-16 3 views
2

저는 solaris에서 개발 된 java3d 프로젝트를 가지고 있습니다. 저는 여러 가지 이유로 MacBook으로 옮기기 위해 노력하고 있습니다. (그 이유는 우리 solaris 시스템이 고통스럽게 느리다는 것입니다).Java3d + osx + netbeans

기본적으로이 프로젝트에 osx + netbeans를 사용하지만 mac 1.6 JDK의 구식 java3d 버전에 포함되지 않은 java3d 메소드를 참조하는 것으로 보입니다. 이 문제를 해결하기위한 첫 번째 시도는 프로젝트의 외부 jar로 java3d 1.5.2 라이브러리를 포함하는 것이었지만 netbeans은 1.5.2 j3d 라이브러리 대신 1.6 JDK의 이전 라이브러리를 계속 참조하려고합니다.

또한 netbeans 파일 탐색기에서 1.5.2 항아리를 탐색 할 때 1.6 jdk에 포함되지 않은 메소드가 해당 클래스 아래에 표시되지 않습니다. 그러나 솔라리스에서 같은 일을 할 때 그 방법이 나타납니다. 그래서 기본적으로, 제가 포함하려고하는 항아리에는 실제로 필요한 메소드/클래스가 포함되어 있다는 것을 압니다. netbeans은 찾을 수 없습니다.

불명확 한 점이 있으면 명확히하십시오. 나는 이것을 쓰는 것을 혼란스러워했다.

미리 도움을 청하십시오!

답변

0

새로운 java3d jar를 이전 클래스보다 먼저 넣으려면 CLASSPATH를 조정해야하는 것처럼 들립니다. 최신 Java3D JAR을/Library/Java/Extensions에 넣으십시오. 그리고 작동하지 않는다면, ~/.MacOSX/environment.plist의 CLASSPATH 변수를 새로운 JAR를 가리 키도록 설정하십시오 (로그 아웃이 필요하고 변경 사항을 적용하려면 다시 로그인해야합니다). Java3D에 의존하는 다른 Java 응용 프로그램에서는 이전 버전이 필요한 경우 좋지 않을 수 있습니다. 기본적으로, 당신이 겪고있는 것은 "DLL hell"또는 "dependency hell"입니다 (Java 제외). 의존성을 명시 적으로 버전 화하고 필요한 의존성을 자동으로 다운로드하여 설치하는 Maven2 빌드 시스템을 사용하면이 문제를 해결할 수 있습니다. 또한 Maven2를 사용하는 프로젝트는 NetBeans에서 자동으로 인식됩니다.

+0

첫 번째 픽스가 작동하여 확장 프로그램 폴더에 jar 파일을 넣습니다. 나에게 이상한 점은 netbeans가 외부 항아리로 추가 한 경우에도 1.5.2 메소드가 숨겨져 있다는 것입니다. 그러나 확장 폴더에 항아리를 추가하면 메서드가 1.6JDK 및 외부 항아리 둘 다에 나타납니다. 이상한 야생 물건이지만, Michael 도움에 감사드립니다. – achar

+0

Extension의 내용이 Tools> Java Platforms> Classes 메뉴 항목의 Netbeans에 나열되어 있기 때문입니다. @achar JOGL도 업데이트해야합니까? – romeroabelleira

0

관련이 있는지 확실하지 않지만 Netbeans 프로젝트의 Java PlatformSource/Binary Format 설정을 조정 해보십시오.

Netbeans 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 속성을 클릭 한 다음 '출처'패널에서 '출처/이진 형식'콤보 상자에서 JDK 버전을 조정하십시오. '라이브러리'패널에서 'Java 플랫폼'콤보 상자에서 플랫폼 버전을 조정하십시오.

이러한 설정을 잘못하면 비슷한 문제가 발생합니다.