1
mikemikemike OP 这里能找到这样的合作朋友不?
|
2
exch4nge 2015-02-04 11:06:49 +08:00
可以不用java写。.jar文件可以当做zip压缩包,看看对应目录里有没有那个名字的xxx.class就好了。
(任何语言)用zip库遍历一下每个.jar文件的目录,查看是否存在对应路径上的.class文件即可。 哦,有可能遇到一个类在多个jar包的情况,这种情况我就不知道了…… |
3
lxrabbit 2015-02-04 11:08:54 +08:00
jar -xvf xxx.jar 不是应该这样解包的么
|
4
libo26 2015-02-04 11:34:43 +08:00
研究下jar命令吧
|
5
nesuk 2015-02-04 11:36:22 +08:00
好像有一个开源的组件(好像名字是WhichJar?),可以自动识别Class加载自哪个Jar。
|
6
nesuk 2015-02-04 11:36:41 +08:00
|
7
Fancye 2015-02-04 11:40:03 +08:00
···java
Class clazz = String.class; Package p = clazz.getPackage(); System.out.println(p.getName()); ``` Hope that helps! |
9
ledkk 2015-02-04 12:15:31 +08:00
java -verbose:class 这个会自己打印加载类所在的jar包路径的
|
10
vjnjc 2015-02-04 13:06:56 +08:00
@Fancye 我感觉不是这样的,这样只会打印出他的packname而不会说是哪个jar包。
比如apache的httpclient,代码只能打印出org.apache.http.client,而事实上楼主要的是android.jar(没错,httpclient是android build-in的包)。 坦白说我不会,记忆里class loaded后只能获得他的packagename,不知道它的jar包名,坐等高手。 如果楼主执意需要的话可以求助于IDE,eclipse和idea都有找出当前class位于×.jar的功能 |
11
tension2012 2015-02-04 13:10:35 +08:00
grep javax/xml/soap/MessageFactory `find . -name *.jar`
|
13
sinsin 2015-02-04 13:24:32 +08:00
难道不是要分两种情况看么233
* 运行时的情况:检查ClassLoader已经加载了的类使用反射可以做到,比如-verbose:class是会显示所在jar的;slf4j-logback输出的日志也有显示所在jar这功能。如果都还没加载,或者同名class在多个jar中存在,那些没加载的自然不会“出现”。 * 静态的情况:在一堆jar或src目录中搜索某个ClassName在哪里存在,那就是IDE或zip工具能做到的事。有个GUI小工具JarIndexer也可以做到。 |
14
Fancye 2015-02-04 13:53:17 +08:00
Addtion:
```java Class clazz = String.class; ProtectionDomain pd = clazz.getProtectionDomain(); System.out.println(pd.getCodeSource().getLocation()); ``` Hope that helps! |
15
Fancye 2015-02-04 13:54:15 +08:00
stdout:
``` file:/E:/Workspaces/MyEclipse%20Professional%202014/tcs/lib/redstone.jar ``` |
16
Fancye 2015-02-04 13:55:05 +08:00
Sorry ,my class is XmlRpcClient!
|
17
mikemikemike OP |
18
vjnjc 2015-02-04 16:18:25 +08:00
这种啊。。。貌似是用zip遍历。。。
同等高手 |
19
ericliuhe 2015-02-04 18:47:38 +08:00 via iPhone
clazz.getResourceAsURL(clazz.getSimpleName() + ".class")
手机打字,方法名可能有点出入,自己纠正 把结果打印出来你就懂了 |
20
yorkw 2015-02-04 18:58:26 +08:00
|
21
sinsin 2015-02-04 19:05:13 +08:00
@mikemikemike 原来是伸手党啊。。。233
你的需求并不明确,我们不会去试试。这问题里各种工具的作者都跑进去回了,自己找合适的吧。 http://stackoverflow.com/questions/1342894/find-a-class-somewhere-inside-dozens-of-jar-files |
22
mikemikemike OP |
23
fxbird 2015-02-04 22:31:00 +08:00
@mikemikemike how much?我写过
|
24
KentY 2015-02-05 05:59:04 +08:00
你交代的不明白,你vm里load了一个class,你想知道这个class来自哪个jar? 还是说你有个class名字,包括包名,想知道哪个jar里有这个class名字?
|
25
Fancye 2015-02-05 10:20:03 +08:00
@mikemikemike I done. If you need, put your email please.
|
26
Fancye 2015-02-05 15:05:37 +08:00
@mikemikemike
Source link:https://github.com/baininghan/findJar Jar from pan.baidu: http://pan.baidu.com/s/1c0CPIxU password:jntg |
27
xbaofeng 2015-02-06 21:32:05 +08:00
total commander 直接搜压缩文件
|
28
Fancye 2015-02-12 23:04:58 +08:00
|