儘管我們已經部署了最新版本,但我們看到正在使用的類的較早版本。要掃描應用程序服務器所有子文件夾中的所有JAR文件,我們如何編寫一個小型shell腳本來打印出發現該特定類的JARS文件的文件名?JarScan掃描所有子文件夾中的特定類的所有JAR文件
9
A
回答
16
喜歡的東西:
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文件類在當前目錄下找到
1
現在回答這個問題是一個簡單的shell命令,爲我們做了這個。
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
2
如果你需要導致只有這樣,你可以安裝agentransack http://www.mythicsoft.com/agentransack/,做一個包含文本搜索。 Agentransack也搜索jar和zip文件。
1
幾年前,我寫了一個實用程序classfind來解決這樣的問題。將你的類路徑設置爲指向你的.jar集合,並且classfind會告訴你它將在哪個jar中找到一個特定的類。
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
4
不能直接回答你的問題,但也許這將解決你的問題:你可以打印出從一個特定的類中加入一個簡單的線條到您的代碼加載的位置(例如,jar文件):
System.err.println(YourClass.class.getProtectionDomain().getCodeSource());
然後你會知道它來自哪裏。
3
工具JAR Explorer非常有用。
它彈出打開一個GUI窗口與兩個面板。您可以選擇一個目錄,該工具將掃描該目錄中的所有JAR文件,然後讓您搜索特定的類。下面的面板然後點亮所有掃描的JAR文件中該類的命中列表。
1
1
#! /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. 春天 - 掃描特定的jar文件
- 3. 如何掃描文件夾中的所有文件,包括VC++ 2008中的子文件夾?
- 4. Nmake - 編譯所有子文件夾中的所有源文件
- 5. 掃描特定的每個文件夾的PowerShell中的子文件夾
- 6. Outlook掃描特定文件夾並保存電子郵件中的所有附件
- 7. Java中的掃描類或jar文件
- 8. 掃描一個文件夾+子文件夾+在PowerShell中獲取具有特定擴展名的文件
- 9. 重定向所有子文件夾請求到一個特定的文件夾
- 10. 的.htaccess拒絕所有子文件夾指定文件夾
- 11. Python - 處理特定文件夾中的所有文件
- 12. 的Java:掃描文件夾中特定文件
- 13. 刪除文件夾和所有子文件夾(包括文件夾)中的所有文件
- 14. NServiceBus - 掃描所有組件
- 15. 迭代iphone中的文件夾的所有子文件夾
- 16. 使用上下文:組件掃描掃描所有基本包
- 17. 查找具有特定名稱的所有子文件夾,使得超級文件夾具有特定模式
- 18. 在某個文件夾及其所有子文件夾中搜索特定類型的文件
- 19. 定位文件夾及其所有子文件夾/子文件夾
- 20. 不要加載/掃描來自特定jar的類文件
- 21. 掃描文件夾中的文件
- 22. 批處理腳本pngcrush的所有文件中的所有子文件夾
- 23. 替換Windows中所有子文件夾中的所有文件名#
- 24. GIT中忽略特定類型的所有文件,除了那些在特定的子文件夾
- 25. 忽略除特定文件夾(和所有子文件夾)內的文件類型?
- 26. 爲什麼JMeter沒有從JMETER_HOME/lib/junit文件夾中掃描JAR文件
- 27. 在文件夾和所有子文件夾中的所有文字文件上操作任務VBA
- 28. 從文檔庫中的所有子文件夾中檢索所有文檔 - CSOM
- 29. 有CMake遞歸掃描文件夾?
- 30. 列表而不extention的文件夾和子文件夾中的所有文件
使用'unzip -l'代替'jar'使它運行非常快。 'jar'花了72秒,比'4'時用'unzip -l'運行 – 2009-04-17 12:19:27
我來這裏說這個。 +1 – 2009-04-17 15:28:30