2014-09-26 2 views
0

나는 클래스를 컴파일하려고하는데, child.class이라는 자식 클래스는 부모 클래스를 확장한다. child.class에 부모 클래스의 모든 필수 코드가 포함되도록하고 싶습니다. 실제로 독립적으로 사용할 수 있습니다.자바에서 확장 클래스를 컴파일하는 방법은 무엇입니까?

가능합니까?

두 번째 질문 : a.class, b.class, c.class가 포함 된 .jar 라이브러리가 있다고 가정합니다. 업데이트 된 버전의 a.class를 만들었습니까? 새 클래스를 원래 클래스로 바꿀 수 있습니까? 항아리에있는 a.class? 그것은 가능한가?

죄송합니다.

+1

1) 기본적으로 할 수 없습니다. 함께 포장하거나 종속성을 선언하십시오. 2) .jar를 다시 생성하십시오. –

+0

최종 목표는 jar 라이브러리의 a.class를 업데이트하는 것입니다. 라이브러리는 닫힌 소스입니다. 먼저 a.class를 확장하고 새로운 a.class를 생성하고 이전 것으로 대체하려고합니다. 어떻게하면 될까요? – arsenal

+0

@arsenal 그건 불가능합니다. javadoc 계약과 바이트 코드에서 a.class를 재 작성하려고 시도 할 수도 있지만 이는 단지 광기 일뿐입니다. – Deltharis

답변

0

1) 의견에서 언급 된 드미트리가 불가능합니다. 비록 당신의 부모 클래스가 절대적으로 아무것도하지 않는다면 그것의 정의는 여전히 검사 될 것이고, 발견되지 않는다면 ClassNotFoundException (또는 유사한)이 던져 질 것입니다.

2) 어떤 상황에서 확실히 가능하고 유용합니다 (소스로부터 모든 것을 다시 컴파일하지 않고 외부 라이브러리를 패치 함) 당신이 올바른 포장을 돌볼 필요가

jar uf test.jar com\test\Test.class 

참고 : Is there are way to patch jar files? 구체적 가장 유용한은 (IMO) CoolBeans의 대답이다 참조 -) 마음에 온다. 항아리에 서명하면 작동하지 않습니다.

관련 문제