2014-05-15 3 views
0

"제 3 자"개발자로부터 .class 파일을 구입한다고 가정 해보십시오. 그들은 .class 파일을 보내지 만 소스 코드는 보내지 않습니다. 동봉 된 문서에서 .class 파일의 정규 경로 이름이 무엇인지, 클래스가 호출되는 대상 및 공용 멤버가 무엇인지 알려줍니다."제 3 자".class 파일에 대한 정규화 된 경로 이름 정보를 잘못 표시하면 어떻게됩니까?

한다고 가정 내가 지금처럼, 내 프로그램에서 자신의 클래스를 사용

class Main { 
    public static void main(String[] args) { 
     thirdparty.special.PaidFor.method(); 
    } 
} 

내 프로젝트를 컴파일하려면, 내 ("삭감") javac의 명령은 다음과 같습니다 -

javac -cp bin Main.java 

나 ' 이 javac 명령에 -cp 옵션을 추가하고 PaidFor.class 파일이 이동 된 다음 폴더 구조를 수동으로 만들었습니다.

(folder structure) 
\bin \ thirdparty \ special \ PaidFor.class 

(. 아마도, javac의의 -cp 옵션 및 수동으로 폴더 구조를 만들기는 필수) 다음과 같은 상황이 발생하면 어떻게됩니까 무엇 : 미래에 언젠가

, 내 프로젝트 소스 코드 및 관련 폴더를 구조가 삭제되고 타사 .class 파일과 함께 제공된 설명서도 잘못 표시됩니다. 즉, 제 3 자 .class 파일에 method.()와 같은 멤버가 포함 된 PaidFor라는 클래스가 포함 된 "thirdparty.special"이라는 정규화 된 이름이 있다는 것을 더 이상 알 수 없습니다.

나는이 상황에서 내가 할 수있는 것에 대한 단서를 온라인에서 찾았다. "Java 클래스 분석기"와 같은 설명이있는 다양한 다운로드가 나타났습니다. 이 주제와 관련하여 아무 것도 모르는 상태에서 이것이 가장 적절하고 적절한 접근 방식인지 궁금합니다. 의견을 보내 주셔서 감사합니다.

+0

적절한 폴더 strcture를 사용하여 클래스 파일을 jar 파일로 저장하고 원시 파일 대신 classpath에 저장해야합니다. – Ray

+0

미래에 프로젝트 소스 코드와 폴더 구조가 삭제되어 영구히 손실 될 경우 유료 클래스가 필요하지 않으며 수수께끼가됩니다. – Java42

+0

문서가 포함 된 jar 파일 및/또는 아카이브로 제공되지 않는 경우 * 비용을 지불하지 마십시오 *. – Durandal

답변

2

.class 파일에서 'javap'도구를 실행하십시오.

1

클래스 파일 수준에서 모든 클래스 이름은 정규화 된 것입니다. 클래스 파일을 검사하기 만하면 포함 된 클래스의 정규화 된 이름뿐만 아니라 포함 된 모든 필드 및 메서드의 이름과 유형이 제공됩니다.

여기에는 여러 가지 도구가 있습니다. 실제로, 나는 an open source classfile disassembler 나 자신을 썼다.