在应用程序中处理jar文件

原创 2004年09月16日 08:37:00
         本文的目的在于讲述如何通过程序处理jar文件,这与在命令行或者IDE中操作jar文件差别比较大。我们主要涉及到的内容是java.util.jar包以及java.io包的使用。

    很多开发者对java.util.jar包并不熟悉,因此文章将主要讲述如何使用其中的8个类,其中JarFile和JarEntry类是核心类,他们分别代表了jar文件以及jar文件中的文件实体。通常我们可以通过如下方法构建JarFile的实例,有了JarFile的引用后我们就可以对其进行处理了。
JarFile(File file)
JarFileFile file, boolean verify)
JarFile(File file, boolean verify, int mode)
JarFile(String name)
JarFile(String name, boolean verify)
你可以使用File对象或者String类型的文件名来构建JarFile,例如JarFile jarFile = new JarFile("j2me.jar");得到这个引用后我们可以调用jarFile.entries()方法返回JarEntry对象的Enumeration。这样我们就可以操作他了。首先我们编写一个程序来浏览jar文件中的内容。
   import java.io.*;
   import java.util.*;
   import java.util.jar.*;

   public class ListJar {
     public static void main(String args[]) {
       for (int i=0, n=args.length; i<n; i++) {
         try {
           listjar(args[i]);
         } catch (IOException e) {
           System.err.println("Problems reading: " + args[i]);
         }
       }
     }

     private static void listjar(String name)
             throws IOException {
       System.out.println("Jar: " + name);
       JarFile jar = new JarFile(name);
       Enumeration e = jar.entries();
       while (e.hasMoreElements()) {
         listInfo((JarEntry)e.nextElement());
       }
       System.out.println();
     }

    private static void listInfo(JarEntry entry) {
       System.out.println("/t" + entry.getName());
    }
   }
程序的内容比较简单,我们编译通过后在相同的目录放置一个jar文件,然后执行java ListJar xxx.jar。下面是我执行后的结果:
C:/TEMP>java ListJar nts.jar
Jar: nts.jar
        META-INF/
        META-INF/MANIFEST.MF
        CleanMIDlet.class
        CleanWorker.class
        DeluxeMIDlet.class
        DeluxeWorker$1.class
        DeluxeWorker.class
        PrimitiveMIDlet.class
        SimpleWaitMIDlet$1.class
        SimpleWaitMIDlet.class
        SingleMIDlet.class
        SingleWorker.class
        ThreadedMIDlet$1.class
        ThreadedMIDlet.class
        WaitCanvas$1.class
        WaitCanvas.class

在我们的程序中不仅可以浏览这些文件,还可以对特定的文件进行读取。比如我想读取MANIFEST.MF中的内容,那么我们可以得到Attributes类,然后得到其中的内容。下面的方法可以读取MANIFEST.MF中属性为MIDlet-4的值。
     private static void getManifest(String name) throws IOException
     {
      System.out.println("Jar: " + name);
      JarFile jar = new JarFile(name);
      Manifest mf = jar.getManifest();
      System.out.println((mf==null)?"null manifest":mf.toString());
      Attributes at = mf.getMainAttributes();
      System.out.println(at.getValue("MIDlet-4"));
       
     }
java.util.jar包中包含了很多处理jar文件的api,用户应该多参考java doc。

jstl 在tomcat5以及webSphere上的部署

本文是我在第一次使用JSTL中在不同环境下部署中遇到的问题以及解决办法,因为项目赶时间,解决办法可能不是最好的,见笑见笑。本地环境:  服务器:tomcat5.0        JRE 版本:1.5....
  • skyfree
  • skyfree
  • 2005年04月29日 21:57
  • 2547

应用程序中的服务器错误。 配置错误

   “/第六讲”应用程序中的服务器错误。 配置错误 说明: 在处理向该请求提供服务所需的配置文件时出错。请检查下面的特定错误详细信息并适当地修改配置文件。 分析器错误信息: 在应用程序级别之外使用注...
  • domybesttoday
  • domybesttoday
  • 2007年04月10日 22:41
  • 1408

在IIS7.5中部署PHP网站报错:无法在<fastCGI>应用程序配置中找到<handler> scriptProcessor

1:在IIS7.5中部署PHP网站报错:无法在应用程序配置中找到 scriptProcessor  解决方案: 1)拷贝PHP必备的应用程序和扩展DLL(复制2个文件夹php和phptmp) 2)...
  • dmz1981
  • dmz1981
  • 2017年03月16日 16:04
  • 9728

在应用程序或全局主题目录中无法找到主题“Standard"

原因是在web.config中定义了“Standard”,但是不存在“App_Themes-->Standard”路径和文件,所以报错。...
  • hotdilan
  • hotdilan
  • 2014年12月12日 15:22
  • 366

photoshop CS5 绿色版提示 在应用程序文件夹中发现其它未经许可的语言包

我是装的win7旗舰版,PS CS5用的绿色版的,当我打开PS 之后就出现下图这种情况,打不开,是不是没有语言包 还是win7的兼容性问题。 解决方法:   右键->管理员身份运行 就可以了,其实...
  • luozhuang
  • luozhuang
  • 2012年03月23日 11:10
  • 20186

Silverlight 应用程序中未处理的错误

SCRIPT5022: Silverlight 应用程序中未处理的错误 代码: 2108 类别: InitializeError 消息: 无法下载初始屏幕或白屏问题...
  • mh942408056
  • mh942408056
  • 2015年07月17日 17:57
  • 1878

在指定的 DSN 中,驱动程序和应用程序之间的体系结构不匹配

 通过ODBC/JDBC连接程序和数据库时,异常报错“在指定的 DSN 中,驱动程序和应用程序之间的体系结构不匹配”的解决办法 在指定的 DSN 中,驱动程序和应用程序之间的体系结构不匹配 ...
  • u013028876
  • u013028876
  • 2014年07月23日 15:27
  • 4229

在应用程序配置文件中找不到名为“”的连接字符串问题

菜鸟刚学MVC,在学习MVC的时候,发现将EF放在其他项目调用的时候,会出现在应用程序配置文件中找不到名为“”的连接字符串问题。 解决步骤: 1.查看项目引用是否调用EntityFraemwork...
  • oqqMuSe
  • oqqMuSe
  • 2016年11月29日 00:34
  • 1846

3秒钟解决“/”应用程序中的服务器错误

前段时间将我们的项目部署到IIS上后启动浏览抛出了喜欢又讨厌的黄页。         喜欢,是因为我又有了学习的机会;讨厌,是因为它是一个错误,不幸的话可能要花费很长很长的时间来解决它,在项目这么紧...
  • u010773667
  • u010773667
  • 2015年01月26日 14:11
  • 3776

“/”应用程序中的服务器错误。运行时错误 黄页错误解决办法!

错误解决办法! 先看看程序文件夹属性-安全-组及用户名管理中 是否存在asp.net访问用户 没有则加上其权限 如下图      “/”应用程序中的服务器错误。运行时错误运行时错误 说明: 服务...
  • XiaoSanLun
  • XiaoSanLun
  • 2010年07月15日 10:18
  • 2179
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:在应用程序中处理jar文件
举报原因:
原因补充:

(最多只允许输入30个字)