최근에 배포 한 클래스가 있지만 사용중인 클래스의 이전 버전이 표시됩니다. 응용 프로그램 서버의 모든 하위 폴더에있는 모든 JAR 파일을 검사하려면이 특정 클래스가있는 JARS 파일의 파일 이름을 인쇄하는 작은 쉘 스크립트를 작성하려면 어떻게해야합니까?JarScan은 특정 하위 클래스의 모든 하위 폴더에있는 모든 JAR 파일을 검색합니다.
답변
뭔가 같은 :
find . -name '*.jar' | while read jarfile; do if jar tf "$jarfile" | grep org/jboss/Main; then echo "$jarfile"; fi; done
이 같은 것을 마무리 할 수
jarscan() {
pattern=$(echo $1 | tr . /)
find . -name '*.jar' | while read jarfile; do if jar tf "$jarfile" | grep "$pattern"; then echo "$jarfile"; fi; done
}
을 그리고 jarscan org.jboss.Main
현재 디렉토리 아래에있는 모든 jar 파일에서 클래스를 검색합니다
이제이 질문에 대답하는 것이 우리를 위해 만든 간단한 쉘 명령입니다.
for jarFile in $(
ls -R |
awk '
match($0, ".*:") {
folder=$0
}
! match($0, ".*:") {
print folder$0
}' |
grep "\.jar" |
sed -e "s/:/\//g"
);
do
unzip -l $jarFile;
done |
awk '
match($0, "Archive.*") {
jar=$0
}
! match($0, "Archive.*") {
print jar" : "$0
}' |
grep org.jboss.Main
결과가 필요한 경우 agentransack http://www.mythicsoft.com/agentransack/을 설치하고 포함 된 텍스트 검색을 수행 할 수 있습니다. Agentransack은 jar 파일과 zip 파일을 검색합니다.
몇 년 전에 이런 문제를 해결하기 위해 유틸리티 classfind을 작성했습니다. 클래스 경로가 .jar 세트를 가리 키도록 설정하면 classfind가 특정 클래스를 찾을 항아리를 알려줍니다.
example% classfind -c Document
/usr/java/j2sdk1.4.0/jre/lib/rt.jar -> org.w3c.dom.Document
/usr/java/j2sdk1.4.0/jre/lib/rt.jar -> javax.swing.text.Document
하지 직접 질문에 대답,하지만 어쩌면이 문제를 해결할 수 : 특정 클래스가 코드에 간단한 줄을 추가하여로드 된 위치 (예 : jar 파일)을 인쇄 할 수 있습니다
System.err.println(YourClass.class.getProtectionDomain().getCodeSource());
그러면 어디서 왔는지 알 수 있습니다.
도구 은 매우 유용합니다.
두 개의 패널이있는 GUI 창을 엽니 다. 디렉토리를 선택하면 도구가 해당 디렉토리의 모든 JAR 파일을 검색 한 다음 특정 클래스를 검색 할 수 있습니다. 그런 다음 아래쪽 패널에 모든 스캔 된 JAR 파일의 해당 클래스에 대한 히트 목록이 표시됩니다.
이 도구의 새로운 URL : https://github.com/javalite/jar-explorer – ipolevoy
Java 도구 JarScan을 살펴볼 수도 있습니다.
클래스 이름 및 패키지별로 검색 할 수 있습니다.
Total Commander를 사용할 수없고 Java 만 실행할 수 있으면 많은 도움이됩니다.
#! /bin/sh
path=$1
segment=$2
if [ -z "$path" ] || [ -z "$segment" ]
then
echo "Usage: $0 <path> <segment>"
exit
fi
for jar in $path/*.jar ; do echo " *** $jar *** " ; jar tf $jar| grep --color=always $segment; done;
- 1. 배치 : 절대 경로로 모든 하위 파일을 나열하십시오.
- 2. 이 하위 클래스를 제외한 특정 클래스의 모든 요소를 선택하려면 어떻게해야합니까?
- 3. Java에서 수퍼 클래스의 모든 하위 클래스를 열거 할 수있는 방법
- 4. Java에서 상위 클래스의 모든 하위 클래스에 액세스
- 5. PHP에서 클래스의 모든 하위 클래스를 얻는 방법
- 6. 디렉토리와 하위 디렉토리에있는 모든 jpg 파일을 나열합니다.
- 7. 프로젝트의 하위 폴더에있는 모든 이미지 리소스를 얻는 방법은 무엇입니까?
- 8. 모든 테이블에서 특정 하위 문자열 검색
- 9. 하위 폴더에있는 URL?
- 10. 모든 하위 레코드 얻기
- 11. 모든 하위 확인란을 선택하십시오.
- 12. 개미 지퍼; 모든 하위 디렉토리와 파일을 제외하십시오.
- 13. 하위 폴더의 모든 하위 폴더를 하위 폴더로 만듭니다.
- 14. wx로 하나의 폴더에있는 모든 파일을 수확하는 방법
- 15. Tomcat의 폴더에있는 모든 파일을 나열하려면 어떻게합니까?
- 16. 클래스의 모든 하위 클래스를 가져 오는 방법 (AS3)
- 17. recursive를 사용하여 아카이브와 같은 폴더에 파일을 추출하여 모든 디렉토리를 검색합니다.
- 18. find 명령을 사용하여 텍스트 패턴이있는 모든 파일을 검색합니다.
- 19. 모든 하위 요소에서 스타일 제거
- 20. 모든 하위 뷰가있는 UITableViewCell이 사라집니다.
- 21. UIView와 모든 하위 뷰를 Context
- 22. 플렉스로 폴더에있는 모든 파일 업로드하기
- 23. 일부 기본 클래스의 모든 하위 항목에 대해 Unity Injection을 구성하십시오.
- 24. 클래스의 모든 속성을 Perl의 새 하위 클래스에 복사하는 방법은 무엇입니까?
- 25. Doctrine - 하위 클래스의 필드 목록 가져 오기는 모든 필드를 가져옵니다.
- 26. Perl/Moose에서 모든 하위 클래스의 메소드에 수식어를 적용하려면 어떻게해야합니까?
- 27. 모든 하위 폴더에서 특정 폴더 만 삭제하고 만드는 방법
- 28. 모든 하위 폴더를 쿼리하는 방법은 무엇입니까?
- 29. GridView는 모든 행에서 데이터를 검색합니다.
- 30. 하위 클래스의 init 재정의
'jar'대신 'unzip -l'을 사용하면 매우 빠르게 실행됩니다. 'jar'는 'unzip -l'을 실행하면 72 초에서 4 초가 걸립니다. –
정확히 말하면 여기에 왔습니다. +1 –
어떤 항아리에서 특정 클래스를 찾을 수 있는지 알고 싶다면 보통 cd ~/.m2/repository와 같은 작업을 수행합니다. grep -r -H "classname"*. – extraneon