2010-12-07 3 views
21

Eclipse 용 Java 디 컴파일러를 권장 할 수 있습니까? 내 다른 질문은 다른 Java 프로그램에서 디 컴파일 된 코드를 사용하는 데 어떤 제한이 있습니까? 불법인가? 뭐라구? 나는 라이센스에 대해 많이 모른다. 읽어 주셔서 감사합니다.Java 디 컴파일러

+0

비슷한 논의에 [선택하고 테스트 자바 디 컴파일러 (http://stackoverflow.com/questions/3898391). –

+0

"Eclipse Class Decompiler"일까요? 사이트 위치는'http : // feeling.sourceforge.net/update /'입니다. 더 많은 것을 읽으십시오 http://www.blogjava.net/cnfree/archive/2012/10/30/390457.html, 그리고 http://feeling.sourceforge.net/ –

+8

이 질문이 화제 떨어져 것과 같이 닫히는 흥미로운, 것과 같이 나 같은 많은 프로그래머는이 정확한 문제에 대해 SO에와 있습니다 (그리고 아래에 게시 된 해답 덕분에 답을 찾을 수 있습니다). 또한이 사이트의 "Ask"부분에 따르면 질문은 "일반적으로 프로그래머가 일반적으로 사용하는 소프트웨어 도구를 포괄해야합니다." –

답변

30

나는 자바에서 디코드하는 JD 인 google을 추천합니다. 정말 잘 작동합니다.

제한 사항에 대해서는 특정 소프트웨어의 라이센스를 읽어야하며, 어떤 방식 으로든 디 컴파일을 금지한다는 내용이있을 수 있습니다.

+3

+1 - 라이센스를 읽습니다. * "라이센스에 대해 많이 알지 못합니다."* 라이센스 조항을 위반하여 고소를 당하면 유효한 구실이 아닙니다. –

+1

그냥 머리를 위로, 이것은 현재 3.7 (인디고)에서 작동하지 않습니다. –

+1

JD-GUI가 aspectj로 weaven을 역 컴파일하지 못함 - 제시된 Java 코드가 잘립니다. – mark

2

JD은 내가 아는 최고의 Java Decompiler입니다.

+0

JD-GUI가 weaven 유형을 디 컴파일하지 못합니다. by aspectj - 제시된 Java 코드가 잘립니다. – mark

7

나는 JadClipse을 좋아하지만 장소의 연령을 표시합니다. 당신이 필요합니다 :

  • JAD 진
  • jadClipse는
  • 줄 번호를 생성하도록 지시하고있다

디버깅을 위해 정렬 바이너리 위 JAD에 Eclipse 환경 설정을 설치 몇 가지 단점이 있습니다 :

  • 코드는 pr입니다. 바이트 코드가 재 배열되어 바이트 코드가 늦어 지지만 원래 소스에서 초기에 발생했다면 jad는 역 직렬화 코드를 올바른 행에 넣지 않습니다.
  • jad는 Java 5 + 6 바이트 코드를 잘 이해하지 못합니다.
2

나는 첫 번째 질문에 대답 할 수 없습니다 그것은 아마도, 바이어스 될 것이다 ... 당신의 두 번째 질문에 대해

을의 디 컴파일은 법적이다. 이 점은 나에게 매우 중요하다. 이 재미있는 페이지를보십시오 : http://www.program-transformation.org/Transform/LegalityOfDecompilation

+0

의견에 감사드립니다. – MartK

+0

미국의 특정 상황에서만 합법입니다. 적어도 당신이 제공 한 링크에 따르면. –

1

나는 JD이 매우 좋음을 발견했습니다. 하지만 런타임에 예기치 않은 동작을 초래 한 하나 또는 두 개의 작은 버그가있었습니다.

예를 들어 원래 사례 설명에 마지막 노드에 '중단'이 없었던 사례가 있었지만 (자연적으로 불필요하므로) JD가 노드를 다시 정렬하기 때문에 ' 기본 '사례가 예기치 않게 호출되었습니다. 또한 문자 집합에 문제가있어서 어디에서나 toString()을 추가로 호출해야만 예상대로 로그 아웃 할 수 있습니다. 그것으로부터 떨어져서 그것은 컸다!

다른 디 컴파일러 DJ을 사용하여 JD에서 디 컴파일 한 코드의 문제를 해결할 수있었습니다. 그러나 DJ가 처리 할 수 ​​없었던 다른 것들이 있었기 때문에 두 디 컴파일러의 혼합이 저에게 효과적이었습니다 :

잘만되면 Dupuy가이 글을 읽을 것입니다!

+0

JD-GUI가 aspectj로 weaven을 역 컴파일하지 못함 - 제시된 Java 코드가 잘립니다. – mark

5

나는 여러개의 디 컴파일러를 시험해 보았고, 대부분은 디 컴파일하려고 시도한 애플릿의 정확한 소스를 생성하지 못했습니다 (누군가 재현하려는 경우에 대비하여 http://mrl.nyu.edu/~perlin/experiments/emotive-actors/).

절대적으로 완벽하게 작동 한 코드는 Cavaj 1.11입니다.이 코드는 구문 오류가 없으며 소스에서 컴파일 된 애플릿이 원본과 동일하게 실행됩니다. UI에서 누락 된 부분은 다음과 같습니다. Ctrl-A/Ctrl-C 키보드 단축키가 작동하지 않고 일괄 변환을 사용할 수 없습니다. 내가 시도

다른 디 컴파일러 있었다 :

  • JD Java decompiler (프리웨어) 좋은 보이지만,
  • Neshkov DJ Java Decompiler (일부 선언, 다른 하나는 심하게 배치 된 실종 된) 변수 선언과 실수를 많이했다 (셰어웨어)도 멋지게 보입니다. 코드에 의해 생성 된 코드는 JD보다 구문 오류가 적었지만 코드는 작동하지 않았습니다. 제품이 무료가 아니므로, 제품을 조금 더 기대할 수 있습니다.
내가이 이클립스 플러그인을 사용하고
+2

Cavaj는 Jad의 래퍼입니다. Jad는 불행히도 유지 관리되지 않으며 Java 6/7에 대한 지원이 누락되었습니다. 정적 가져 오기를 지원하지 않습니다. – rustyx