Javap 도구를 사용하여 JAR 파일로 클래스 구조를 어떻게 인쇄합니까?

StackOverflow https://stackoverflow.com/questions/1171549

  •  19-09-2019
  •  | 
  •  

문제

Javap 도구를 사용하여 항아리에 클래스 파일의 메소드를 나열하고 싶습니다. JAR의 모든 클래스 파일의 메소드와 멤버를 나열하도록 어떻게해야합니까? 지금 당장 나는 한 번에 한 번의 수업만으로 그것을 할 수 있습니다.

나는 내가 말하면 같은 것을 기대하고있다

javap java.lang.*

Java.lang 패키지의 모든 클래스의 방법과 구성원을 모아야합니다. Javap이 그럴 수 없다면 그러한 도구가 있습니까?

도움이 되었습니까?

해결책

#!/bin/bash
# Set the JAR name
jar=<JAR NAME>
# Loop through the classes (everything ending in .class)
for class in $(jar -tf $jar | grep '.class'); do 
    # Replace /'s with .'s
    class=${class//\//.};
    # javap
    javap -classpath $jar ${class//.class/}; 
done

다른 팁

더 쉬울 것입니다

JAR=<path to jarfile> \
javap -classpath $JAR $(jar -tf $JAR | grep "class$" | sed s/\.class$//)

먼저 JAR 파일을 압축하면 각 패키지에 대한 일련의 디렉토리를 생성 한 다음 디렉토리 당 JAVAP 명령을 적용합니다.

예를 들어 Tomcat을 사용하면 webapps 밸런서에서 Catalina-Balancer.jar 파일을 압축 한 다음 사용 할 수 있습니다.

javap -classpath org\apache\webapp\balancer Rule

주는 것

Compiled from "Rule.java"
interface org.apache.webapp.balancer.Rule{
    public abstract boolean matches(javax.servlet.http.HttpServletRequest);
    public abstract java.lang.String getRedirectUrl();
}

패키지의 모든 클래스 파일에 대해이 작업을 수행 해야하는 경우 클래스 경로를 걷고 Filenames에서 .class를 제거하고 Javap으로 전달하려면 스크립트 또는 프로그램을 작성해야합니다.

(perl/bash/java로 쓰기가 상당히 쉬울 것입니다).

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top