jdGui는 개별 구성 요소의 jar 파일을 분해 .class 파일을, [...]하지만 이클립스 또는 IDEA에로드 할 수있는 전체 프로젝트 뭔가 을 설정하는 방법이있다 "단순히"수 다시 컴파일합니까?
"단순한"방식이든 "단순하지 않은"방식이든 상관없이 간단하지만 시간이 오래 걸리는지 또는 시간이 많이 걸릴지에 따라 달라집니다. 단순한.
자동 디스어셈블러는 드물게 개발자 작성 코드처럼 보이는 코드를 생성하는 경향이 있습니다. 즉, 새로운 문제가 발생하면 디스어셈블러 코드를 읽는 데 어려움이 있습니다. 한편 해체 경험이 풍부한 숙련 된 개발자는 동일한 드롭 인 대체품으로 컴파일 된 Java Opcode를 읽음으로써 코드를 작성할 수 있습니다. 두 방법 모두 성공 가능성을 높입니다.
그런 다음 의미있는 내부 변수 이름을 재구성하는 부분이 있습니다. 이는 일반적으로 코드를 읽을 수있게 만드는 데 중요합니다. 이는 저렴한 코드 유지 관리의 전제 조건이됩니다. 노련한 개발자는 종종 코드의 구조를 읽고 디버거에서 플랫폼을 관찰하여 도움을받으며 변수의 이름을 무엇인지에 대해 교육받은 추측을합니다. 종종 그 정도면 충분하지만, 다시 말하면 느린 과정입니다.
마지막으로 코드 구조가 올바르게 이해되어 문제를 해결할 수 있어야합니다. 운이 좋다면 문제는 캡슐화 된 작은 코드 블록에 영향을 미칩니다. 그러한 상황에서, 단위 테스트의 작은 세트는 픽스가 문서화되지 않은 다른, 그러나 달리 요구되는 논리를 깨뜨리지 않도록하기 위해 구성 될 수 있습니다.
당신이 불행한 경우, 여러 다른 모듈을 함께 업데이트해야합니다. 다시 말하지만, 이것은 변경되고있는 모든 모듈이 안전한 변경을하기에 충분히 이해되어야한다는 것을 의미합니다 (간신히 읽을 수있는 환경에서).
이렇게 할 수 있습니다. 많은 작업이 해결하려는 문제에 직접적으로 기여하지 않을 수도있는 많은 작업입니다. 이 분야에 숙련 된 사람들은 JAR 파일을 재 포장하여 작업이 진행되는 동안 런타임 디버깅을 얻을 수 있습니다. 나는 전에 그것을했으며, Mena의 의견을 완전히 이해합니다. 그러나 나는 이상한 새이다. 나는 그 일을 좋아했다.
나는 주머니가 충분히 깊다면 걱정할 것입니다. 트래픽을 컨테이너 안팎에 기록하고 동일한 작업을 수행하는 새로운 대체 메시지를 작성하는 것이 더 저렴할 수 있습니다 (단, 다음을 제외하고는 전송되지 않는 초 임계 메시지를 로깅 할 위험이 있습니다. 당신이 포착하지 않은 조건 하에서).
짧은 대답, 아니요.필자가 선택한 JD-GUI의 디 컴파일러에서 얻은 것에서 소스를 다시 빌드하는 무서운 작업을 시작할 수도 있습니다. 그런 다음 무언가가 작동 할 때까지 다시 컴파일하고 배포하고 테스트하십시오. 나는 네가되고 싶지 않아. – Mena
또한 디 컴파일의 품질은 컴파일 당시의 원래 컴파일러 설정에 따라 다릅니다. 지금 당장 나는 당신이 피해 평가를 할 것을 제안 할 것입니다. 완전한 소스를 되 찾을 필요가 있습니까, 아니면 클래스 또는 두 가지를 대체하는 간단한 수정을 할 수 있습니까? 이것에 대한 답은 시간이 걸리기 때문에 행동과 예산을 결정할 수 있습니다. –
IntelliJ의 최신 버전에는 적절하게 좋은 디 컴파일러가 있음에 유의하십시오. 이렇게하면 꽤 길을 얻을 수 있습니다. –