2011-02-09 2 views
7

내 RCP 앱에서 속성 (osgi.java.profile)을 파일로 지정하고 싶습니다. 내 설치 및 구성 디렉토리와 관련된 경로를 사용하는 것이 좋습니다.Eclipse OSGI 구성 : 상대 경로 및/또는 @ config.dir과 같은 대체?

config.ini에서 지원되는 변수의 종류는 무엇입니까? config.dir @


는 내장에 참조가 지원하는 것, 그리고 그것은 항상 전형적인 예로서 언급 한 것 (예를 들면 this SO answer) 그러나, 이클립스 도움말/Runtime Options 같은 문서에서 찾고, 그것은 몇 가지를 언급 @ 기호는 @ user.home과 같습니다; 그러나 그것은 상당히 제한적으로 보이고 @ config.dir을 포함하지 않습니다.

소스도 마찬가지로 org.eclipse.osgi 개로 파고 들었으며 이에 대한 언급이 없습니다. (@ user.dir & co에 대한 LocationManager와 하드 코딩 된 변수 대체가 있습니다.) 어떤 방식 으로든 임의의 시스템 속성을 참조 할 수 있습니까?

이 @ config.dir은 특별한 경우이며 P2에서만 처리됩니까? 업데이트 :이게 옳은 것 같습니다. Eclipse SDK를보고 .. 구성 대화 상자에 @ config.dir이 해결되지 않은 것 같습니다. 아마도 춘분자가 문자 그대로 찍었을 것입니다.

어떤 힌트를 주셔서 감사합니다.

org.eclipse.core.runtime.adaptor.LocationManager에서
+0

+1 나는에 대한 현상금을 열어 해요 : 나는 당신이 당신의 목적을 위해이 같은 것을 사용할 수 상상

osgi.configuration.area=$APPDATA$/MyCompany/MyProgram/configuration osgi.user.area=$APPDATA$/MyCompany/MyProgram/user osgi.instance.area=$APPDATA$/MyCompany/MyProgram/instance 

: 구문은 달러 기호 ($ 변수 $) 변수 대체를 표시하기 위해 사용 이 질문. 내 config.ini의 eclipse.p2.data.area에 대한 설정 영역보다는 설치 디렉토리에 상대적인 경로를 지정할 수 있어야합니다. 아무도 저에게 어떻게 할 지 말해 줄 수 없다면, 200 명의 담당자를 두십시오! –

+0

@pelotom, 부스트 주셔서 감사합니다. - 희망이 있습니다. 저는 제 질문에 정확한 대답이 없다는 것을 확신합니다. (믿을 수 없지만 핵심 부분은 대체로 하드 코딩 된 것 같습니다.) 그러나, 당신이 더 관심을 갖고있는 것 같아서 P2 특정 속성, 그것은 더 잘 지원 될 수 있습니다. 즉 @ config.dir은 특별히 P2 구성 처리에 의해 처리되는 것 같습니다. – inger

답변

1

, 여기에 특별한 토큰은 다음과 같습니다

// Data mode constants for user, configuration and data locations.                       
    private static final String NONE = "@none"; //$NON-NLS-1$                         
    private static final String NO_DEFAULT = "@noDefault"; //$NON-NLS-1$                       
    private static final String USER_HOME = "@user.home"; //$NON-NLS-1$                       
    private static final String USER_DIR = "@user.dir"; //$NON-NLS-1$                       
+0

감사합니다 크리스 - 그 같은 목록을 발견 (내 질문 참조). 꽤 제한된 것처럼 보입니다 - 뭔가 (예 : 시스템 속성 또는 sg)를 놓친 것인지 궁금합니다. 프레임 워크를 통해 디버깅 한 후 많은 희망이 보이지 않습니다. – inger

+0

나는 Equinox 뉴스 그룹 http://www.eclipse.org/forums/index.php?t=msg&goto=653500&S=2de0a18be29a148e02639f3968181b8e#msg_653500-에 대한 비슷한 질문을 기다리고있다. – inger

+0

@inger : 소스 코드에서 지원되는 유일한 옵션 인 것으로 보입니다. –

1

는 왜 두 개의 시스템 등록 정보 변수를 사용할 수 있습니까?

이름은 -Dmy.relativepath=filename이며 이식 설치 폴더 (작업 영역 또는 다른 위치)의 상대 경로 코드로 처리되며 다른 하나는 -Dmy.path=absolutepath입니다.

시스템 등록 정보가 jvm에 전달되므로, 변수에 값을 사용하려면 원시 실행 프로그램 (예 : eclipse.exe)에서 약간의 (런타임시 변수 번역) 필요합니다. osgi.java.profile가 org.eclipse.osgi.framework.internal.core.Framework에서 해결하는 방법을

+0

물론 이클립스가 가지고 있어야하는 속성을 만들 수있는 해결 방법을 시도 할 수는 있지만 최소한 추가 런처 스크립트, 추가 해킹이 필요할 것입니다.이 후에 config.ini에서 그 속성에 도달 할 수 있는지 확실하지 않습니다. , 다른 속성 정의의 일부로. 내가 놓친이 일을 할 수있는 Eclipse 기능이 있다면 정말 관심이있었습니다. – inger

+1

@inger, 확실히 p2의 까다로운 부분입니다. @ config.dir은 런타임에 프레임 워크 속성 'osgi.configuration.area'의 값으로 대체됩니다. org.eclipse.equinox.internal.p2.core.Activator.buildLocation (String, URI, boolean, boolean) 메소드를 참조하십시오. jvm의 시스템 속성 'eclipse.p2.data.area'의 값은 항상 '@ config.dir /../ p2'입니다. – Kane

1

봐 :

// check for the java profile property for a url 
String propJavaProfile = FrameworkProperties.getProperty(Constants.OSGI_JAVA_PROFILE); 
if (propJavaProfile != null) 
    try { 
     // we assume a URL 
     url = new URL(propJavaProfile); 
    } catch (MalformedURLException e1) { 
     // try using a relative path in the system bundle 
     url = findInSystemBundle(propJavaProfile); 
    } 

osgi.java.profile 정규화 된 URL에 하나를 지적, 또는 시스템 번들 상대 경로에해야 함을 의미한다 (org.eclipse.osgi) . 이로 인해 Eclipse에 패치를 적용하지 않고 설치 디렉토리 상대 경로를 사용할 수 없게됩니다.

1

당신이 이것을 달성하기 위해 플랫폼 URL (Platform URI scheme)를 사용할 수 있습니다, config.ini에서 즉

osgi.java.profile = platform:/config/java_profile.txt 

는 현재 구성 디렉토리에있는 파일 java_profile.txt를 가리키는 것입니다.

osgi.java.profile = ${osgi.configuration.area}/java_profile.txt 
+0

이것이 도움이 될 것입니다. 빨리 시도하십시오. 이 지원이 최근에 추가되었는지, 3.6.x에서 작동하는지 알고 있습니까? 지난 시간을 포기하고 더러운 절대 경로로 끝 맺었습니다. – inger

+0

@inger 예, 최소한 [documentation] (http://help.eclipse.org/helios/index.jsp)에 따르면 3.6에서 작동해야합니다. – tkotisis

3

나는 파티에 늦게 해요,하지만 희망이 미래에 다른 사람을 도움이 될 것입니다

또한 config.ini 파일에서 기존의 시스템 속성을 사용할 수 있습니다.

Eclipse 3.8/4부터 시작.2 (2012 년 6 월)에서 Java 속성 및 환경 변수를 config.ini 파일 (Eclipse Bug 241192)로 대체 할 수 있습니다. 춘분 실행 프로그램은 eclipse.ini 실행 프로그램 파일에서 대체를 지원하지 않습니다.

osgi.java.profile=$osgi.install.area$/path/to/profile.txt 
+0

일부 변수와 잘 작동합니다. 'osgi.install.area'. osgi.configuration.area와 같은 다른 변수는 해결되지 않습니다. – Tobber