linux下如何查找当前目录下所有jar包中包含AAA内容的class文件名

linux下如何查找当前目录下所有jar包中包含AAA内容的class文件名,第1张

试试这个:find  -name "jar"|awk '{print "jar -tvf "$1}'|sh|grep AAA

补充:题主的问题不解开jar包用命令解决不了,上述命令仅用于查找jar包中class文件名称包含AAA关键字的,而不是内容,下面的命令可以输出jar包名称及其含有AAA关键子名称的class文件

find  -name "jar"|while read name; do echo file:$name;jar -tvf $name|grep AAA; done

另:在windows下当你双击打开jar包,然后双击class文件查看其内容,也是临时解压后打开的,所以要查看jar包中class文件的内容,你不解开怎么能做到呢?

要达到题主的目标,只能解开,方法如下:

编辑一个shell脚本,名称随意,如findAAAsh,内容如下:

#!/bin/bash
find <path> -name "jar"|while read jarname    #这里<path>修改为你要在哪个目录下查找jar及class文件
do
    echo "Processing jar-file:$jarname"
    mkdir /tmp/jartmp    #临时解开放置的目录
    cd /tmp/jartmp
    jar -xf $jarname
    find  -name  "class"|while read cname
    do
        findflag=$(strings $cname|grep AAA)        #class文件都是二进制的,用strings查看
        if [ "$findflag"x != x ];then
            echo "Class File: $cname include keyword AAA"
        fi
    done
    rm -rf /tmp/jartmp  #删除临时文件
done

编辑好脚本后,sh findAAAsh执行即可。

一般在网页的<head></head>标签中,会有类似下面的代码:

<link href=";

这种表示外连样式表,你按照href中的路径打开css文件即可。

如果是直接写在<style></style>中的内连样式,那就在这中间找就可以。

最好的办法是预览网页,然后通过chrome或者firefox的开发者工具调试,非常简单,以chrome浏览器举例,如下图:

在想查看样式代码的位置,右键,审查元素,定位到html代码,在右下角能直接看到,该行文字应用的class为title,这个样式的具体内容如图,位置在stylev23css中的第90行。

1点 “window”-> "Preferences" -> "Java" -> "Installed JRES"
2此时"Installed JRES"右边是列表窗格,列出了系统中的 JRE 环境,选择你的JRE,然后点边上的 "Edit", 会出现一个窗口(Edit JRE)
3选中rtjar文件的这一项:“c:\program files\java\jre_150_06\lib\rtjar”
点 左边的“+” 号展开它,
4展开后,可以看到“Source Attachment:(none)”,点这一项,点右边的按钮“Source Attachment”, 选择你的JDK目录下的 “srczip”文件
5一路点"ok",结束。

使用UE(Ultra Edit)打开class文件,切换到16进制模式,查看第1行: CA FE BA BE 00 00 00 3200 75 07 00 02 01 00 27 ; 前8个字节:CA FE BA BE 是固定的后面的4个字节:00 00是次版本号次版本号后面的4个字节:00 32是编译源代码的jdk版本号32(对应十进制的50):JDK1631(对应十进制的49):JDK1530(对应十进制的48):JDK142F(对应十进制的47):JDK13 2E(对应十进制的46):JDK12 编译器的jdk版本是12 编译器的jdk版本是16

class
文件应该不是用来开的吧
运行class文件的方法
JAVA类文件的运行方法(在控制台下):
java
包名+class文件
如果JAVA类存在于default包中就可以直接用类名运行,但如果JAVA类存在于自定义的包中就要在运行的时候加上包名,如:serverclass位于包srcbillnet中,serverclass文件位于c:\java文件夹中,那么在运行的时候就要在控制台下输入:c:\java>java
srcbillnetserverclass
[arguments]
虽然在文件系统中可以看到serverclass是在c:\java\src\bill\net>文件夹下的,但是在运行的时候不能像下面的输入c:\java\src\bill\net>java
serverclass
[arguments]
,这样是不能运行的,因为没有给出JAVA类的包信息。

假设你的当前目录下有一个 helloclass
那么你只要在这个目录下执行命令
java hello (不要加class六个字哦!)
不过要提醒你,不是所有的 class 都可以执行!

需要下载JAD并安装
1,将下载到的JAD反编译工具解压,将得到的jadexe放置到系统某一目录下,如C:/Java/jre150_07/bin;(位置可以随便放,以后配置要用,推荐放到java目录下)
2,将下载到的JadClipse压缩包netsfjadclipse_330jar(对应你刚才下载的版本)放置到Eclipse目录下plugins内(该目录是专门放置插件的,你也可以自己建立个文件夹来放置插件,但要记住路径,后面需要配置)
启动配置
安装完成后,eclipse自动将JadClipse Class File Viewer设置成class文件的缺省打开方式。
如果没有默认,可以在Eclipse的Windows——> Perference——>General->Editors->File Associations中修改“class”默认关联的编辑器为“JadClipse Class File Viewer”。
设置完成后,双击class文件,eclipse将自动反编译。
对于存在源代码的类,它不会强行反编译,也就是说它还是会用eclipse自带的Class File Viewer查看class文件,手动设置Window->Preferences->Java->JadClipse,把Ignore existing source选中,就不会管有没有源码,都会反编译

方法一:
1、右键src文件夹
2、选择build path
3、选择config build path
4、点击library
5、点击add exterdal class folder
6、选择class文件所在的文件夹即可
注意:当该文件夹被删除后,则class文件也被删除而导致出错
方法二:
1、右键src文件夹
2、选择build path
3、选择config build path
4、点击library
5、点击add class folder
6、点击create new folder
7、此时在工程中会出现Referenced Librarier,在其中包含了新文件夹,这时右键新文件夹
8、选择import
9、选择general
10、选择file system
11、选择class文件所在的文件夹
12、勾选class文件
13、点击ok即可
这时class已经被导入到新文件夹中,可删除之前的老文件夹


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12604155.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存