试试这个: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/bashfind <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版本是16class
文件应该不是用来开的吧
运行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已经被导入到新文件夹中,可删除之前的老文件夹
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)