2010-05-19 5 views
9

Eclipse 플러그인 프로젝트가 있으며 Eclipse 작업 공간에있는 다른 프로젝트에 따라 다릅니다. "Java Build Path"-> "Projects"탭 아래에 프로젝트 종속성을 추가하고 "Order and Export"에서 프로젝트를 선택하면 java.lang.NoClassDefFoundError가 발생합니다.다른 프로젝트 종속성이있는 Eclipse 플러그인 프로젝트

다른 프로젝트가 플러그인에 제대로 포함되지 않았다고 가정합니다. 누구든지이 문제를 해결하는 방법을 알고 있습니까?

덕분에, 프로젝트 제임스

답변

12

이클립스 플러그는 일반 자바 프로젝트 다르게 종속성을 관리합니다.

.class 파일로 패키지를 추가한다고 가정합니다.

Eclipse 플러그인 프로젝트에서 라이브러리 폴더를 정의하십시오. 외부 클래스 및/또는 jar를 라이브러리 폴더에 복사하십시오.

META-INF 디렉토리에서 MANIFEST.MF 파일을 엽니 다. 하단에 8 개의 탭이있는 형식이 지정된 편집기가 나타납니다.

런타임 탭을 클릭하십시오. 라이브러리 폴더에있는 외부 클래스 및/또는 jar를 Classpath에 추가하십시오. 또한이 외부 클래스 및/또는 jar를 프로젝트의 Java 빌드 경로에 추가합니다.

종속성 탭을 클릭하고 가져온 패키지 대화 상자에서 다른 Java 프로젝트를 추가하십시오. "Exported not exported packages"라는 박스를 체크해야합니다. 다른 Java 프로젝트가 Eclipse 플러그인 인 경우 필수 플러그인에 대신 추가하십시오.

+0

"가져온 패키지"섹션에서 패키지를 추가하려고했지만 "패키지 선택"대화 상자에서 다른 프로젝트의 패키지를 찾을 수 없습니다. 이 전에 내가해야 할 일이 있니? –

+0

미안하지만, 프로젝트에서 새로운 Eclipse 플러그를 생성 한 이후로 꽤 오래되었습니다. 더 많은 지침으로 답변을 업데이트했습니다. –

+0

길버트 : 지침을 좀 더 명확하게 설명해 주시겠습니까? 프로젝트 -> Java 빌드 경로 -> 라이브러리 -> 클래스 추가 폴더를 통해 바이너리를 추가 한 다음 플러그인의 종속성 탭에 패키지를 가져 왔습니다. Manifest.MF 파일에서 가져온 패키지에 대해 "사용할 수있는 번들 내보내기 패키지 'x'"오류가 표시됩니다. 내가 뭐 놓친 거 없니? –

0

종속 프로젝트를 플러그인 프로젝트에 복사 할 수있는 위치에 있지 않고 플러그인이 설치 될 대상 Eclipse의 종속 프로젝트가 있는지 확실하다면 다음 중 하나를 사용하십시오. Runtime.exec() 실행하려는 Java 클래스를 실행하거나 클래스를 실행하려면 ProcessBuilder 클래스를 실행하십시오. 이처럼

:

// To compile 
Process p = Runtime.getRuntime().exec("javac yourclass.java"); 
// To execute 
Process p2 = Runtime.getRuntime().exec("java yourclass"); 

이것은 최악의 경우에 고려 될 수있다. 나는 그런 경험을했기 때문에 어떤 사람들은 유용하다고 생각했다.

관련 문제