2009-06-23 4 views
29

이것은 수년간 저를 괴롭 혔습니다. 좋은 사람이 알기를 바랍니다. Eclipse의 .classpath 파일에서 실제로 사용 된 classpathentry 요소의 combineaccessrules 속성은 무엇입니까?combineaccessrules는 Eclipse 클래스 경로에서 무엇을 의미합니까?

자바 빌드 경로 설정 대화 상자에서 매니퓰레이터가 가능하다는 것을 알 수 있지만 좋은 유스 케이스는 아닙니다. 내가 설정에 대해 신경 쓰지 않거나 .classpath 파일을 수동으로 수정하면 아무 효과가없는 것처럼 보입니다.

다른 사람이 사용하기를 바라고 있으며, 나는 그들의 아이디어를 훔칠 수 있습니다. 기본적으로, 나는 가렵 게하려고합니다.

답변

25

답변을 바랍니다 "내부"및/또는 "비 API"클래스 및 메소드 사용을 방지 할 수 있습니다. 으로 클래스 또는 패키지를 추가 할 때 금지 된 또는 낙심 한 지정된 패키지의 클래스 또는 클래스를 사용하면 컴파일러에서 오류 또는 경고를 표시합니다. 액세스 규칙을 더 이상 소개하지 않으려면 this short article을 읽어야합니다.

  • 당신은 프로젝트 A의 클래스 경로에이 개 프로젝트 A와 B
  • 을 수출하는 jar 파일이 : 액세스 규칙은 다음과 같은 상황을 상상 결합하여 사용하기 위해

    . 항아리에는 "안정된 api", "불안정한 api"및 "non-api"공개 클래스가 있습니다.
  • 프로젝트 B는 프로젝트 A.

일부 그 클래스/패키지에 액세스 규칙을 금지 설정 있도록 프로젝트 A의 "비 API를"클래스를 사용하는 것을 허용하지 않습니다에 따라 달라집니다.

프로젝트 B에서는 "non-api"도 허용하지 않지만 "불안정한 api"를 사용할 때는 경고를 받고 싶습니다. 이 경우 프로젝트 B에서 내 보낸 프로젝트 항목의 액세스 규칙을 사용하여 결합 규칙을 확인하면 추가 낙심 액세스 규칙 만 설정하면됩니다.

+0

좋은 답변이며 유용한 사용 사례입니다. 나는 이클립스의 기능을 사용하여 끝낼 것이라고 생각하지 않지만, 마침내 그것이 무엇인지를 아는 것이 좋다. 감사. – skaffman

+1

일반 Java 프로젝트 대신 플러그인 프로젝트를 사용하는 경우 PDE는 매니페스트 파일을 기반으로 이러한 액세스 규칙을 자동으로 생성합니다. –

1

비록 내가 직접 사용해 본 적이 없지만 조금만 들어가면 here을 찾을 수 있습니다.

프로젝트의 수출 항목의 액세스 규칙은이 항목의 액세스 규칙과 결합해야하는지 여부를

액세스 규칙은 "COM/테스트를/**"

3

액세스를 포함하여 같은 것을 할 것 규칙은 아주 작은 것이지만 위험합니다. 프로젝트 컴파일러에서 소스 파일을 제외하지만 파일 시스템에는 파일이 그대로 유지됩니다.

우리가 작업하는 프로젝트는 소스 폴더 중 하나에 부트 스트랩 클래스가 있지만 프로젝트 클래스 경로 전체를 포함 시키면 컴파일되지 않습니다 (긴 이야기이고 빌드 프로세스가 처리합니다).

그래서 우리는 이클립스 액세스 규칙을 사용하여 제외하고 개발 중에 우리를 괴롭히지 않습니다. 이것은 우리가 쉽게 코드를 변경할 수는 없다는 것을 의미하지만, 실제로 몇 년 동안 만져 보지 못한 클래스 중 하나입니다.

결합 액세스 규칙은 JavaDoc을 기준으로 판단 할 때 실제 사용 사례입니다. 그것을 사용하려면, 당신은해야합니다 :

  • 하나 개의 프로젝트의 수출 소스 항목에 액세스 규칙을
  • 부모 프로젝트
  • 의 액세스 규칙을 결합 할 필요에서 해당 프로젝트에 대한 링크 부모와 하위 프로젝트

정말 유용 것이 얼마나 말할 수 없다,하지만 난 적어도 액세스 규칙의 적절한 사용으로 당신의 "무엇이다"질문 :

관련 문제