이미 패키징된 jar 안의 클래스에 함수를 추가하는 방법?
글쓴이: purespace / 작성시간: 목, 2004/07/01 - 4:09오후
이미 jar는 배포되어 있는 상태인데, 이 패키지 안에 있는 클래스 사용자가 함수를 추가하고 싶다면 어떻게 하는게 바람직할지, 조언을 듣고 싶습니다.
물론, 클래스를 수정해서 jar로 다시 묶는 방법은 안되구요. jar를 건드리지말고 동적으로 가능해야 하고, 작성한 함수는 사용자가 등록해두면 계속 재사용이 가능해야 합니다.
혼자 궁리해도, 아는게 부족해서 어째야 하는건지 난감하네요. :oops:
이런 저런 방식이라든가..혹은 이런 경우에 참고가 될만한 자료만이라도 알려주시면 감사하겠습니다..
Forums:
그냥 상속받고 메소드 하나 추가하면 되지 않나요?그런데 원하시는게
그냥 상속받고 메소드 하나 추가하면 되지 않나요?
그런데 원하시는게 이미 컴파일된 클래스에 메소드를 하나 추가하는 거라면
그런건 없습니다. jar에 안묶여있어도 마찬가지입니다.
뭐 또 메모리에 바이트어레이로 읽어서 바이트코드 레벨에서 조작한 다음, 수동으로 로딩하는 이상야릇한 방법이 있을지도 모르죠... 말은 쉽지만 실제로는 불가능할거 같네요...
----
the smile has left your eyes...
자바는 많이 해보질 않아 잘 모르지만, 문득 떠오른게 있어서요,j
자바는 많이 해보질 않아 잘 모르지만, 문득 떠오른게 있어서요,
jar파일이라면 사용할때 import시키고 사용할 텐데(맞죠?)
jar파일안에 패키징된 클래스를 상속받아 새로운 클래스를 만드는건 어떤가요?
물론, 상속받을 클래스가 상속 가능하다면 말이죠.
가능하다면, jar파일의 변경없이 새로운 jar파일을 만들어 내는 것으로 가능할 것 같은데요.
https://nicesj.com
https://blog.nicesj.com
질문 내용이 부족했나 봅니다..^^;;
아 중요한 걸 빼먹었네요.
이 함수가 추가되어야 하는 시점이, 이미 라이브러리의 클래스를 사용하는(혹은 사용할 ; 함수가 추가될 클래스들은 입출력을 나타내는 개체입니다) 프로그램이 실행되고 있는 상태입니다. 프로그램이 이 클래스들을 사용할 때마다 추가된 함수들을 읽어낼 수 있어야 하거든요.
남을 의식하지 않고 언제나 한결같은 모습으로 살고싶다...
Re: 질문 내용이 부족했나 봅니다..^^;;
이렇게 하면 되겠군요.
해당 jar파일에 있는 클래스들의 모양을 그대로 만들어 내고 그 내용을
님이 만드신 코드로 대채합니다. 그리고 해당 메소드에 맞는 원래의 jar파일에 있는 것을 호출하게 하는 것이지요.
중간에서 가로채는 것입니다.
물론, 프로그램이 실행되기 전에, 임의의 라이브러리를 만들어 두어야...
만약 이미 실행되고 있는 상태에서 즉 프로그램의 종료나 중단없이
반드시 실행 중인 상태에서 하기 위해서라면. 전 give up합니다. =0=
gl.
https://nicesj.com
https://blog.nicesj.com
정확한 requirement가 없어서 모르겠지만 제가 볼 때는 무언가 디
정확한 requirement가 없어서 모르겠지만 제가 볼 때는 무언가 디자인상의 문제인 것 같습니다. 99%의 경우 사용하지 않는 비정상적 구현을 요구하는 경우의 99%는 디자인 오류고 나머지 1%는 진짜 requirement가 특이한 경우 더군요.
----------------------------
[서명] 그놈 한국 사용자 모임 - 그놈에 대한 모든 것! - 게시판, IRC, 위키, 갤러리 등등...
그럴지도..
역시..이상하긴 하죠.. :( 제생각에도..좀 이상하다고 생각하긴 했습니다만..
제가 지금 하는 프로그램은 이용해서 클래스이름과 함수이름을 주면 그 함수를 실행시키는 일을 합니다. 물론...실행이 가능한 클래스 이름과 함수이름에 대한 목록을 따로 가지고 있습니다.
이미 있는 클래스와 함수야, 리플렉션을 이용해서 호출하면 되니까 어려운 일이 아닌데..프로그램 사용자가 함수를 추가할 수 있게 하라는 군요. 처음엔 일종의 스크립트나 템플릿같은 걸 이용해서 사용자가 작성하면, 그걸 돌리는 방법을 생각해봤었는데요. 이미 프로그램 자체가 함수를 호출하는 룰을 돌리는 엔진이기 때문에 여기에 새로운 언어(?템플릿?)을 해석하는 엔진을 붙이는 것도 좀 이상하다고 생각되더군요. 더 무거워지기도 할테고..
그래서 생각한게 자바코드를 던져주면 자바코드를 실행할 수 있게 해주자는 거였는데, 이것도..이상한건지.. :oops: ...
남을 의식하지 않고 언제나 한결같은 모습으로 살고싶다...
실행시에 로드된 클래스를 hook해서 vm상의 bytecode를 hots
실행시에 로드된 클래스를 hook해서 vm상의 bytecode를 hotswapping 하고자 하는거라면 aspectwerkz를 참조해 보세요. 저도 읽어 보기만 했는데... 원하시는 것과 얼추 비슷한듯 하네요. eclipse.org의 aspectj 프로젝트도 한번 보시고요.
----
I paint objects as I think them, not as I see them.
atie's minipage
자답..수준이나 될런지 모르지만..^^;;
자바 라이브러리 중에 tool.jar에 자바소스를 돌리는게 있다는 걸 들었습니다.
jsp를 실제로 돌릴 때도 그녀석을 쓴다는 데 찾아봐야 겠습니다.
aspectwerkz에 대한 정보도 고맙습니다.
답변해주신분들 모두 감사합니다.. :D
남을 의식하지 않고 언제나 한결같은 모습으로 살고싶다...
Re: 그럴지도..
거의 자바 IDE와 비슷한 requirement네요 :) 그런 경우라면 일단 자바에서 소스코드를 컴파일해서 바이트 코드를 생성하고 이를 로딩할 수 있는 커스텀 ClassLoader를 만들어 사용하시면 크게 어렵지 않게 구현 가능할 것 같습니다.
----------------------------
[서명] 그놈 한국 사용자 모임 - 그놈에 대한 모든 것! - 게시판, IRC, 위키, 갤러리 등등...
댓글 달기