2012-08-01 3 views
1

우연히 시스템에서 일부 JAVA 소스 파일이 삭제되었습니다.jd-gui 디 컴파일러가 디 컴파일 할 수없는 Java 클래스 파일을 디 컴파일하는 방법은 무엇입니까?

우리는 이클립스 프로젝트로 리포지토리에서 직접 폴더를 체크 아웃 한 다음 다른 이클립스 프로젝트의 폴더를이 프로젝트로 복사하려고 시도했습니다. 이상하게도 모든 폴더 파일은 로컬 시스템에서 사라졌습니다. 그것은 SVN 저장소).

어떻게 든 CLASS 파일에 대해 .svn-base 파일을 얻었습니다. 이제 소스 파일을 얻기 위해 클래스 파일을 디 컴파일하려고합니다. 그러나 일부 클래스 파일은 jd 컴파일러가 처리하려고 할 때 "invalid input file"오류를 표시합니다. 다른 해결책이 있습니까?

+3

만약 그렇게 오래 있지 않다면, 먼저 좋은 datarecovery 도구를 시도하십시오. –

+1

"우리"라고 말하십시오. 작은 회사처럼 보입니다. Git과 같은 버전 컨트롤 사용을 고려해야한다. –

+2

@MartijnCourteaux - 중소기업에만 버전 관리 기능이있는 것처럼 들리 네요. 사실, 그가 개인, 중소 기업, 대기업, 정부, 교육 및 기타 잊어 버린 다른 사례에서 일하는 경우 OP는 버전 제어를 사용해야합니다. 이것은 20 년 이상 업계 표준 모범 사례였습니다. (나는 심지어 버전 제어를 기억할 수 있습니다 ... 1970 년대에 메인 프레임 클래스 컴퓨터에서) –

답변

3

내가 알 수있는 "jd-gui"는 폐쇄 소스이므로 개발자에게 문의하여 해당 메시지의 의미를 알아야 할 수도 있습니다. (오픈 소스 인 경우 소스 코드를 살펴보면 문제가 무엇인지 파악할 수 있습니다.)

그러나 Google에서 여러 가지 질문을 한 것이 분명한 것은 "jd- gui "는 아카이브 (JAR, EAR 등)를 디 컴파일하는 방법을 이해하지 못합니다. 어쩌면 당신은 그것을 작동시키기 위해 무언가를 풀 필요가있을 것입니다.

다른 방법으로 시도해 볼 수있는 것은 "javap"이 "jd-gui"가 좋아하지 않는 클래스 파일을 만드는 것입니다.

0

JAD를 사용하여 파일을 디 컴파일하십시오.

www.varaneckas.com/jad/

당신은 당신의 jar 파일을 압축 해제 한 다음 모든

find <srcdirectory> -name *.class -exec jad -s .java -r -ff -clear -debug -d <dest directory> {} \; 

을 디 컴파일하려면 다음 나는 위의 명령을 테스트 havent 한 등 뭔가를 실행해야 할 수도 있습니다

그러나 희망 그것은 거의 거기에 있습니다 ...

+0

Thanks @ user846476하지만 "클래스 파일이 아닙니다"라는 오류가 발생합니다. – codingscientist

+0

위 검색 방법을 방금 업데이트했습니다. exec 명령으로 실수가있었습니다. 한 파일에 jad를 사용할 수 있습니까? 그렇게 할 수 있으면 find 메소드에 문제가있다. 당신이 할 수 없다면 우리가 JAD – RNJ

+0

을 사용하는 방법에 문제가 있지만 .class를 얻는 중 ... JavaClassFileParseException : ** jad **를 사용하는 동안 잘못된 태그 값 0x12. –