원시 클래스 경로에있는 jar 파일의 경로를 찾으려고합니다. getRawClasspath는 IClasspathEntry 오브젝트의 콜렉션을 리턴합니다. getPath를 호출 할 수 있습니다.Eclipse PDE : /ProjectName/lib/something.jar와 같은 상대 경로가 주어지면 전체 파일 시스템 경로는 어떻게 얻을 수 있습니까?
그러나 getPath 뭔가 이상한 반환이 ipath처럼, 프로젝트 이름으로 시작 :
/ProjectName/lib/something.jar을 풀 -에이 상대 경로를 설정하는 올바른 방법을 무엇
공인 OS 경로? 처음에는 작업 공간 루트에 경로를 추가 할 수 있다고 생각했지만 작업 공간과 프로젝트 사이에 중간 디렉토리가 있기 때문에 작동하지 않습니다.
더 일반적으로 방법으로 반환 된 IPath를 어떻게 처리해야하는지 어떻게 알 수 있습니까? 그 IPath가 무엇인지 나는 결코 알지 못한다. 프로젝트와 관련하여, 프로젝트와 관련하여 작업장과 관련되어 있지만 프로젝트 이름은 첫 번째 요소로, 달의 위상과 관련이 있습니다 ... 모든 문제는 당황 스럽습니다. 문서는 결코 도움이되지 않습니다. 봐야할지 모르겠다.
업데이트
저는 더 혼란 스럽습니다. 문제는 여전히 IClasspathEntry가있을 때 파일 시스템 경로로 해결하는 방법이 여전히 불분명하다는 것입니다.
"경로가 절대 경로 (작업 영역과 관련된)로 시작하는 경우 올바르지 않습니다. 문제는 IClasspath의 getPath 메소드가 다음 두 가지 중 하나를 반환한다는 것입니다. 경로 시작 작업 공간과 관련된 슬래시 또는 실제 파일 시스템 경로 인 /로 시작하는 IPath 예, 두 가지 완전히 다른 것을 하나의 유형으로 밀어 넣습니다. jar 파일이 작업 공간 밖에있을 때 파일 시스템 변형을 얻습니다.
"절대적인"변종은 그 자체로 멋진 문자열 일 뿐이라는 것을 알고 있습니다. IPath는 그 자체로 멋진 문자열 일뿐입니다. 올바른 정보를 가지고 있지 않아서 유용하지 않습니다.
그럼 어떻게 처리해야할까요?
"그걸 알고 있니? 왜 그것은 작업 공간 대신 프로젝트에서 조회가되어서는 안됩니까? 예를 들면? –
경로가 '/'로 시작하는 경우 경로가 절대 경로 (상대 경로 인 작업 영역 루트)임을 의미합니다. 그렇지 않다면 그것은 상대 경로임을 의미하고, 어떤 컨테이너와도 관련 될 수 있습니다 ... IPath.isAbsolute()를 사용하여 경로가 절대 경로인지 여부를 알 수 있습니다. JDT의 IProject.getRawClasspath의 경우 항상 절대 경로를 사용합니다. – Dollyn
필자의 기본적인 실수는 이클립스 경로가 OS 경로와 관련이 있다고 생각하기 시작했다. eclipse 절대 경로 _always_는 파일 시스템 경로가 무엇이든 첫 번째 요소로 프로젝트를 가지고 있습니까? 그래서 /Users/james/workspace/someSubDirectory/foo/ProjectX/src/Code.java에서 /ProjectX/src/Code.java의 절대 경로를 가질 것으로 예상해야합니까? –