`
yanhua
  • 浏览: 88844 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

查看Class从那个jar文件加载及在jar文件中查找Class

阅读更多
查看类是从哪个Jar包中加载的:
java 代码
 
  1. ProtectionDomain pd = MyCase.class.getProtectionDomain();  
  2. CodeSource cs = pd.getCodeSource();  
  3. System.out.println(cs.getLocation());  


查找类在某个目录下哪个Jar包中:

java 代码
 
  1. package test;  
  2.   
  3. import java.io.File;  
  4. import java.util.ArrayList;  
  5. import java.util.Enumeration;  
  6. import java.util.List;  
  7. import java.util.zip.ZipEntry;  
  8. import java.util.zip.ZipFile;  
  9.   
  10. public class FindJarOfClass {  
  11.     public String className;  
  12.   
  13.     public ArrayList jarFiles = new ArrayList();  
  14.   
  15.     public FindJarOfClass() {  
  16.     }  
  17.   
  18.     public FindJarOfClass(String className) {  
  19.         this.className = className;  
  20.     }  
  21.   
  22.     public void setClassName(String className) {  
  23.         this.className = className;  
  24.     }  
  25.   
  26.     public List findClass(String dir, boolean recurse) {  
  27.         searchDir(dir, recurse);  
  28.         return this.jarFiles;  
  29.     }  
  30.   
  31.     protected void searchDir(String dir, boolean recurse) {  
  32.         try {  
  33.             File d = new File(dir);  
  34.             if (!d.isDirectory()) {  
  35.                 return;  
  36.             }  
  37.             File[] files = d.listFiles();  
  38.             for (int i = 0; i < files.length; i++) {  
  39.                 if (recurse && files[i].isDirectory()) {  
  40.                     searchDir(files[i].getAbsolutePath(), true);  
  41.                 } else {  
  42.                     String filename = files[i].getAbsolutePath();  
  43.                     if (filename.endsWith(".jar")||filename.endsWith(".zip")) {  
  44.                         ZipFile zip = new ZipFile(filename);  
  45.                         Enumeration entries = zip.entries();  
  46.                         while (entries.hasMoreElements()) {  
  47.                             ZipEntry entry = (ZipEntry) entries.nextElement();  
  48.                             String thisClassName = getClassName(entry);  
  49.                             if (thisClassName.equals(this.className) || thisClassName.equals(this.className + ".class")) {  
  50.                                 this.jarFiles.add(filename);  
  51.                             }  
  52.                         }  
  53.                     }  
  54.                 }  
  55.             }  
  56.         } catch (Exception e) {  
  57.             e.printStackTrace();  
  58.         }  
  59.     }  
  60.   
  61.     public List getFilenames() {  
  62.         return this.jarFiles;  
  63.     }  
  64.   
  65.     protected String getClassName(ZipEntry entry) {  
  66.         StringBuffer className = new StringBuffer(entry.getName().replace('/', '.'));  
  67.         return className.toString();  
  68.     }  
  69.   
  70.     public static void main(String args[]) {  
  71.         FindJarOfClass findInJar = new FindJarOfClass("org.apache.tuscany.test.SCATestCase");  
  72.         List jarFiles = findInJar.findClass("E:/yanhua/library/tuscany-jar"true);  
  73.         if (jarFiles.size() == 0) {  
  74.             System.out.println("Not Found");  
  75.         } else {  
  76.             for (int i = 0; i < jarFiles.size(); i++) {  
  77.                 System.out.println(jarFiles.get(i));  
  78.             }  
  79.         }  
  80.     }  
  81. }  
分享到:
评论
1 楼 sonymusic 2011-03-31  
似乎有很多代码来查找,我很久以前写过一个命令行的java程序来做这个事情,最近又碰到这个问题,又写了1个swing界面来做这个事情。
代码在这里:
http://code.google.com/p/find-class-in-jars/

相关推荐

    根据class类名在所有Jar包文件中查找class类路径以及jar名字

    功能讲解: 1.搜索分析指定路径下所有jar包中是否存在指定文件。譬方说要在jar包中查询某个**.class文件。...6.查看Class从那个jar文件加载及在jar文件中查找Class 7.快速找出Class文件所在的Jar文件

    在jar包中查找class等文件

    譬方说要在jar包中查询目个**.class文件。用户可以不用打开Jar包,直接输入路径和要查找的文件即可搜索。 3.除了对Jar包进行搜索分析外,还可以对zip包进行分析 4.填写搜索路径是最好不要只填写“E:/”根盘目录,...

    修改jar包中的class文件

    确保新class文件与旧版本在文件路径和命名上保持一致,以便Java虚拟机能正确识别。 4. **重新打包JAR**:使用`jar cf new-jar-file.jar *`命令将修改后的目录重新打包为一个新的JAR文件。如果需要保留原始JAR的...

    在jar包下找class文件

    在Java开发过程中,`jar`(Java Archive)文件是一种重要的归档格式,它用于集合多个`.class`文件,也就是编译后的Java源代码,形成一个单一的可执行文件。这有助于减少部署应用程序所需的资源数量,并方便分发。当...

    eclipse查看jar包class文件源码插件,jar包反编译查看工具

    3. 在文件列表中选择需要查看的类,源代码会自动显示在右侧窗口。 在提供的压缩包文件中,我们看到的文件包括LICENSE、README.md、NOTICE、site.xml、plugins和features。这些文件通常包含开源软件的许可证信息...

    jclasslib修改jar包里面的class文件包含jar

    `jclasslib`是一款强大的反编译器和字节码查看器,它允许开发者查看并修改JAR文件中的`.class`文件。这篇文章将深入探讨如何使用`jclasslib`来操作包含其他JAR的复杂项目。 首先,了解`jclasslib`的基本功能。它...

    将class文件打包成jar文件

    将class文件打包成jar文件是Java开发中常见的需求,尤其在使用WebService的SOAP协议时,为了实现远程调用,往往需要将本地的类文件(.class)打包成jar包进行分发。本文将深入探讨这一过程,包括手动压缩和利用...

    class14.jar文件

    oracle驱动包,class14.jar

    JarClassSearch class 文件搜索工具,可以查找出指定名称的class出现了哪些jar包中

    JarClassSearch class 文件搜索工具,可以查找出指定名称的class出现了那些jar包中 对jar包上了数量的工程特别有用,而且是GUI界面的 真是人见人爱,见人爱人,javaer 的居家旅行必备

    JAVA 将class打包为jar

    3. **设置导出选项**:在弹出的对话框中,选择你需要包含在JAR文件中的Class文件、资源文件等。可以指定一个目标路径和文件名,比如命名为`pet.jar`。 4. **配置Manifest文件**:Manifest文件是JAR文件的一个重要...

    JAR文件包及jar命令详解

    为了使JAR文件成为可执行文件,开发者需要在`MANIFEST.MF`中添加`Main-Class`字段,指定程序的入口点(即包含`public static void main(String[] args)`方法的类)。例如,如果主类位于`test`包下,名为`Test`,`...

    java class jar 文件查看器.7z

    这类工具可以帮助开发者分析代码、查找错误、反编译Class文件,甚至可以查看JAR内的元数据和资源文件。 常见的Class查看工具有: 1. **JAD (Java Decompiler)**:一款流行的Java反编译器,可以将Class文件转换回...

    打包class文件到jar文件方法

    在编写完自己的程序以后,可以利用此方式提供给其他应用程序,安全

    jar包文件查看工具

    2. **加载Jar文件**: 在JADX界面中,通常有一个“Open”或“File”菜单,点击后选择需要查看的.jar文件进行加载。 3. **浏览代码**: 加载成功后,JADX会显示.jar文件的目录结构。你可以逐级展开查看各个类和资源文件...

    jar,class文件源码查看

    在Java开发过程中,有时我们需要查看已编译的.jar或.class文件中的源代码,这对于调试、学习或者理解他人代码的工作流程非常有帮助。标题提到的"jar,class文件源码查看"是一个解决此类需求的工具,它允许用户方便地...

    怎样在eclipse查看.class文件.jar

    在Java开发过程中,有时我们需要查看`.class`文件以理解代码的编译结构或者进行反编译操作。Eclipse作为一款强大的Java集成开发环境,虽然默认并不支持直接查看`.class`文件,但通过添加特定插件可以实现这一功能。...

    怎么看jar包的class文件?

    在Java开发中,JAR(Java Archive)文件是一种常用的打包格式,它将多个类文件、资源文件等集合在一起,便于分发和运行。当我们需要查看JAR包内部的class文件时,可以采取以下方法: 首先,`怎么看jar包的class文件...

    如何将.class文件打成jar包

    - 在文件中添加以下内容:`Manifest-Version: 1.0` - 将文件重命名为 `manifest.mf`。 2. **使用 `manifest.mf` 文件**: - 执行 `jar` 命令时,加入 `-m` 参数并指定 `manifest.mf` 文件的位置。 ```sh jar ...

Global site tag (gtag.js) - Google Analytics