Javap 도구를 사용하여 JAR 파일로 클래스 구조를 어떻게 인쇄합니까?
-
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로 쓰기가 상당히 쉬울 것입니다).
제휴하지 않습니다 StackOverflow