`
iihero
  • 浏览: 257616 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

命令行快速找出class文件所在的jar包

阅读更多
for %i in (dir/b/s *.jar) do 7z l %i | findstr XDatabase.class


示例输出:
D:\shared\xsql>for %i in (dir/b/s *.jar) do 7z l %i |findstr XDatabase.class

D:\shared\xsql>7z l dir/b/s   | findstr XDatabase.class

D:\shared\xsql>7z l db2jcc.jar   | findstr XDatabase.class

D:\shared\xsql>7z l db2jcc_license_cu.jar   | findstr XDatabase.class

D:\shared\xsql>7z l jconn3.jar   | findstr XDatabase.class

D:\shared\xsql>7z l jodbc.jar   | findstr XDatabase.class

D:\shared\xsql>7z l jTDS3.jar   | findstr XDatabase.class

D:\shared\xsql>7z l mlscript.jar   | findstr XDatabase.class

D:\shared\xsql>7z l msbase.jar   | findstr XDatabase.class

D:\shared\xsql>7z l mssqlserver.jar   | findstr XDatabase.class

D:\shared\xsql>7z l msutil.jar   | findstr XDatabase.class

D:\shared\xsql>7z l mysql-connector-java-5.1.6-bin.jar   | findstr XDatabase.class

D:\shared\xsql>7z l ojdbc14.jar   | findstr XDatabase.class

D:\shared\xsql>7z l postgresql-8.4-701.jdbc4.jar   | findstr XDatabase.class

D:\shared\xsql>7z l sqlite.jar   | findstr XDatabase.class

D:\shared\xsql>7z l sqlitejdbc-v056-zentus.jar   | findstr XDatabase.class

D:\shared\xsql>7z l sqljdbc.jar   | findstr XDatabase.class

D:\shared\xsql>7z l ULjDatabaseTransfer.jar   | findstr XDatabase.class

D:\shared\xsql>7z l UltraLiteJ.jar   | findstr XDatabase.class

D:\shared\xsql>7z l UltraLiteJ12.jar   | findstr XDatabase.class

[b]D:\shared\xsql>7z l xsql.jar   | findstr XDatabase.class
2010-12-24 21:05:40 .....        30863        14443  [/b]com\sean\db\XDatabase.class


上述命令弄得还是比较粗糙,干脆写一个批处理findclass.bat
内容如下:
@echo off
SETLOCAL

set WHICH_CLASS=%1
echo WHICH_CLASS=%WHICH_CLASS%

for /F %%i in ('dir /A:-D /S /B *.jar') do 7z l %%i | findstr %WHICH_CLASS% && echo %WHICH_CLASS% found in: "%%i"
echo "Finished class finding..."
echo "======================================"
ENDLOCAL


这样想查找一个class就很容易了:
引用
findclass com\\sybase\\afx\\util\\StringUtil.class
WHICH_CLASS=com\\sybase\\afx\\util\\StringUtil.class
2012-02-27 13:14:36 .....        15230         5915  com\sybase\afx\util\StringUtil.class
com\\sybase\\afx\\util\\StringUtil.class found in: "U:\target\lib\ext\sup-client.jar"
2012-02-27 13:14:36 .....        15230         5915  com\sybase\afx\util\StringUtil.class
com\\sybase\\afx\\util\\StringUtil.class found in: "U:\target\lib\ext\sup-server-rt.jar"
"Finished class finding..."
"======================================"


其实,最想弄的,是把7z的源码稍作修改,直接让7z l <文件> | findstr <class> 直接同时输出文件名,那是最好的办法。
1
1
分享到:
评论
3 楼 iihero 2012-02-28  
niwtsew 写道
贴个俺自己写的linux下的版本,其实没必要用7z,直接jar tf就可以察看jar里的内容,或者linux下用string也可以
#!/bin/ksh
#this script is used to find class in which jar file
if [ "$#" -le "1" ]; then
   echo "Usage: $0 class_name jar_path_1 [jar_path2]...[jar_pathn]"
   exit 1
fi
#class to be found
CLASS=$1

shift 1
for JAR in $*
do
    if [ -d ${JAR} ]
    then
        JARS=`find ${JAR} -name "*.jar"`
    else
        JARS=${JAR}
    fi

    FOUND=""
    for EACHJAR in ${JARS}
    do
        FOUND=$(jar tf ${EACHJAR}|grep ${CLASS})
if [ "x${FOUND}" != "x" ]
        then
            echo "-----------------------------------"
            echo ${CLASS} was found in ${EACHJAR}
            echo ${FOUND}|tr " "  "\n"|grep -v .classPK
        fi
    done
done
exit 0

曾经考虑过使用jar命令,无奈运行速度实在太慢了,跟7z没法比。
2 楼 niwtsew 2012-02-28  
说错,是strings不是string
1 楼 niwtsew 2012-02-28  
贴个俺自己写的linux下的版本,其实没必要用7z,直接jar tf就可以察看jar里的内容,或者linux下用string也可以
#!/bin/ksh
#this script is used to find class in which jar file
if [ "$#" -le "1" ]; then
   echo "Usage: $0 class_name jar_path_1 [jar_path2]...[jar_pathn]"
   exit 1
fi
#class to be found
CLASS=$1

shift 1
for JAR in $*
do
    if [ -d ${JAR} ]
    then
        JARS=`find ${JAR} -name "*.jar"`
    else
        JARS=${JAR}
    fi

    FOUND=""
    for EACHJAR in ${JARS}
    do
        FOUND=$(jar tf ${EACHJAR}|grep ${CLASS})
if [ "x${FOUND}" != "x" ]
        then
            echo "-----------------------------------"
            echo ${CLASS} was found in ${EACHJAR}
            echo ${FOUND}|tr " "  "\n"|grep -v .classPK
        fi
    done
done
exit 0

相关推荐

    在jar包下找class文件

    - **依赖分析**:在理解项目依赖关系时,找出所有使用特定类的`jar`包,有助于优化构建过程。 - **代码迁移**:在将代码迁移到新的项目结构时,快速找出所有相关的类文件。 - **库更新**:检查新版本的库是否包含了...

    在jar包中查找class等文件

    1.列出指定路径下的所有Jar包文件 2.搜索分析指定路径下所有jar包中是否存在指定文件。譬方说要在jar包中查询目个**.class文件。用户可以不用打开Jar包,直接输入路径和要查找的文件即可搜索。 3.除了对Jar包进行...

    JAR包查看器

    1. **调试与故障排除**:当Java应用程序出现错误时,开发者可以通过查看JAR包中的类文件和资源来找出问题所在。 2. **学习库的内部工作原理**:对于开源库,虽然可以获取源代码,但如果只有JAR包,使用查看器可以...

    jar包差异比较器

    Java开发过程中,jar包是常用的部署格式,它封装了类文件、资源文件等,使得代码易于管理和分发。然而,在软件迭代更新时,确保不同版本的jar包之间的差异变得至关重要。"jar包差异比较器"就是针对这一需求设计的...

    jar包大乱炖

    这里提到的“打开文件搜索”是一种实用的方法,通过工具或命令行,如`jar tf &lt;jar_file&gt;`,可以查看jar包内的内容,快速定位所需的类或资源。 在Java开发环境中,有多种方式管理jar包: 1. **MANIFEST.MF文件**:在...

    jar包查看工具.zip

    标题提到的"jar包查看工具.zip"是一个压缩包,其中包含了一个可以帮助开发者查看JAR文件内容的工具。这个工具对于理解和调试依赖于JAR库的应用程序至关重要,尤其是当处理第三方或不透明的插件JAR包时。 首先,我们...

    WIN7下运行Jar文件提示Could not find the main class

    - 使用的JAR文件必须包含所需的主类,且该类已编译为.class文件并包含在JAR包内。 - 修改JAR文件的manifest文件时,要确保格式正确,否则可能导致JAR文件无法正常解析。 通过上述步骤,可以有效解决在Windows 7系统...

    Linux上执行带main方法的java文件

    这里需要注意的是命令中的`-jar`选项,它告诉Java运行时环境去读取该文件的`manifest.mf`文件,并从中找出`Main-Class`,然后执行该类的`main`方法。 #### 总结 通过上述步骤,可以在Linux环境下顺利地执行含有`...

    自动打包.java文件成.jar的小程序(C++)

    1. **读取.java文件**:遍历目录,找出所有不包含package声明的.java文件。 2. **编译.java为.class**:使用`system()`调用javac,为每个.java文件生成对应的.class文件。 3. **创建Manifest文件**:确定主类,生成...

    IDE打包生成JAR的教程

    必须确保主类选择正确,否则生成的Jar包在运行时会出现找不到主类的问题。选中主类后,点击“Finish”按钮,Eclipse会开始打包过程,并最终生成Jar文件。 至此,使用Eclipse打包Jar文件的过程已经完成。打包得到的...

    jar包反编译工具,jar包反编译工具

    - 故障排查:当遇到运行时异常或性能问题时,查看底层字节码有助于找出问题所在。 - 学习第三方库:通过查看库的源代码,可以帮助理解其工作原理。 - 开源项目无源码:某些开源项目可能只提供了.jar文件,使用反...

    我的jar包2我的jar包2我的jar包2我的jar包2我的jar包2

    在压缩包子文件的文件名称列表中,只提供了"2"这一项,这可能是由于隐私保护或误输入导致的,正常情况下,这里应该列出jar包内的具体文件名。通常,一个jar文件可能包含以下结构: - 类文件(.class) - 资源文件...

    查看.jar文件工具

    - 调试:当遇到异常或错误时,查看对应的类文件和资源,找出问题所在。 - 学习:研究开源项目,理解代码实现和架构。 - 安全分析:检查潜在的恶意代码或病毒。 - 更新资源:有时,你可能需要替换或添加新的资源到....

    使用Eclipse制作可执行jar文件

    2. **编辑Manifest文件**:默认情况下,Eclipse生成的Manifest文件可能缺少`Class-Path`属性,这将导致运行时找不到外部库。因此,需要手动添加`Class-Path`行,列出所有依赖的外部库路径,例如: ``` Manifest-...

    使用Built Fat Jar 制作可执行jar

    1. **打开存放目录**:打开 JAR 文件所在的目录,确保所有相关的配置文件(如 XML 配置文件、日志配置文件等)和依赖的 JAR 包都位于同一目录下。 2. **运行程序**:在命令行中切换到该目录,并执行以下命令来运行 ...

    JAVA连接DB2所需要的JAR包

    2. **添加JAR到项目**:将"JAVA2DB2jar包"解压,找出包含DB2 JDBC驱动的JAR文件,然后将其添加到你的Java项目的类路径中。这可以通过IDE(如Eclipse、IntelliJ IDEA)的设置完成,或者在命令行编译时使用`-cp`或`-...

    maven项目编译jar包

    Maven提供了内置的目标来构建JAR包。最常用的是`package`目标,它会编译源代码,运行测试,并打包成可部署的形式。在命令行中,你可以输入以下命令来执行这个目标: ``` mvn package ``` 4. **配置JAR插件**: ...

    dex2jar_2.0

    【dex2jar_2.0】是一个针对Android应用开发中的重要工具,主要用于处理Dalvik执行文件(.dex)与Java字节码(.class)之间的转换。在Android系统中,应用的代码通常被编译成.dex格式,这是一种优化过的字节码格式,...

    fatjar使用教程

    - fatjar是Java项目的一种打包方式,它可以将主程序以及所有依赖的jar包一起打成一个单独的jar文件。 - 这种打包方式特别适合于微服务或者独立运行的应用程序,能够简化部署过程,避免因缺少依赖而导致的问题。 2...

    找出Web程序依赖的所有的JAR

    本篇文章将详细探讨如何找出Web程序依赖的所有JAR文件,以及为什么这样做至关重要。 首先,我们需要理解Web应用程序的结构。一个典型的Web应用由多个组件组成,包括Servlet、JSP、JavaBeans、以及其他第三方库。...

Global site tag (gtag.js) - Google Analytics