2012-12-09 3 views
1

저에게 작성되지 않고 더 이상 유지 관리되지 않는 Java 응용 프로그램을 사용하고 싶습니다. 따라서 저자에게 가서 새로운 기능을 요청할 수는 없습니다. 프록시 기능을 추가하려면 어떤 옵션이 필요합니까? 쉘 인자를 추가 할 수 있습니까? 프록시의 바이너리 코드를 .class 파일에 직접 추가하는 것이 관리 가능한 작업입니까? 내 자신의 클래스를 작성하고 .class 파일의 내용을 가져 와서 네트워크 기능을 덮어 쓸 수 있습니까?코드를 변경하지 않고 네트워킹 앱에 프록시를 추가 할 수 있습니까?

+0

많은 Java 디 컴파일러가 있습니다. 그러나 나는 그것이 얼마나 합법적인지, 그리고 저자가이를 승인한다면 어떻게되는지 모른다. – 11684

+0

예, 오타가 있습니다. https 프록시 구성이 분리되어 있음을 잊지 마십시오. –

답변

2

이 당신을 위해 작동 될 수 있습니다

java -Dhttp.proxyHost=IP_address -Dhttp.proxyPort=8080 -jar App.jar 
2

이 같은 이름/패키지와 클래스를 생성하고이 우선하도록 클래스 경로에 이전 배치하여 자신의 구현 클래스를 교체 할 수 있습니다. 그러나이 클래스가 코드의 다른 부분에서 사용되는 경우 이진 호환성을 손상시킬 수 없습니다.

클래스가로드 될 때 클래스를 수정하는 데 사용할 수있는 계측 API도 있습니다. Instrumentation API을 참조하십시오. 컴파일 된 .class를 참조 자신의 소스 파일을 작성하는 경우

+0

나는 가장 쉬운 해결책을 '받아 들였다'. 당신의 것도 흥미 롭습니다. – erikbwork

0

, 다음 파일에이 일을 시도 :

java.util.Properties systemProperties = System.getProperties(); 
systemProperties.setProperty("http.proxyHost", PROXY_HOST); 
systemProperties.setProperty("http.proxyPort", PROXY_PORT); 

내가 그 일을한다고 생각합니다.

+1

downvote에 대해 설명해주세요. 나는 이것을 비슷한 상황에서 사용했고 그것은 나를 위해 일했습니다. – The111

+0

나는 왜 이것이 downvoted인지 알고 싶습니다! – erikbwork

관련 문제