模块  java.base
软件包  java.net

Class JarURLConnection


  • public abstract class JarURLConnection
    extends URLConnection
    URL连接到Java ARchive(JAR)文件或JAR文件中的条目。

    JAR URL的语法是:

      jar:<url>!/{entry} 

    例如:

    jar:http://www.foo.com/bar/baz.jar!/COM/foo/Quux.class

    Jar URL应该用于引用JAR文件或JAR文件中的条目。 上面的示例是一个引用JAR条目的JAR URL。 如果省略条目名称,则URL引用整个JAR文件: jar:http://www.foo.com/bar/baz.jar!/

    当用户知道他们创建的URL是JAR URL时,用户应该将通用URLConnection转换为JarURLConnection,并且他们需要特定于JAR的功能。 例如:

      URL url = new URL("jar:file:/home/duke/duke.jar!/");
     JarURLConnection jarConnection = (JarURLConnection)url.openConnection();
     Manifest manifest = jarConnection.getManifest(); 

    JarURLConnection实例只能用于从JAR文件中读取。 使用此类无法使用OutputStream修改或写入基础JAR文件。

    例子:

    一个Jar条目
    jar:http://www.foo.com/bar/baz.jar!/COM/foo/Quux.class
    一个Jar文件
    jar:http://www.foo.com/bar/baz.jar!/
    一个Jar目录
    jar:http://www.foo.com/bar/baz.jar!/COM/foo/

    !/被称为分隔符

    通过new URL(context, spec)构建JAR URL时,以下规则适用:

    • 如果没有上下文URL并且传递给URL构造函数的规范不包含分隔符,则URL被视为引用JarFile。
    • 如果存在上下文URL,则假定上下文URL引用JAR文件或Jar目录。
    • 如果规范以'/'开头,则忽略Jar目录,并且规范被认为是Jar文件的根目录。

      例子:

      context: jar:http://www.foo.com/bar/jar.jar!/ ,spec: baz / entry.txt
      url: jar:http://www.foo.com/bar/jar.jar!/baz/entry.txt
      context: jar:http://www.foo.com/bar/jar.jar!/ baz ,spec: entry.txt
      url: jar:http://www.foo.com/bar/jar.jar!/baz/entry.txt
      context: jar:http://www.foo.com/bar/jar.jar!/ baz ,spec: /entry.txt
      url: jar:http://www.foo.com/bar/jar.jar!/entry.txt
    从以下版本开始:
    1.2
    另请参见:
    URLURLConnectionJarFileJarInputStreamManifestZipEntry
    • 字段详细信息

      • jarFileURLConnection

        protected URLConnection jarFileURLConnection
        如果已启动连接,则与JAR文件URL的连接。 这应该通过connect设置。
    • 构造方法详细信息

      • JarURLConnection

        protected JarURLConnection​(URL url)
                            throws MalformedURLException
        将新的JarURLConnection创建为指定的URL。
        参数
        url - URL
        异常
        MalformedURLException - 如果在规范字符串中找不到合法协议,或者无法解析字符串。
    • 方法详细信息

      • getJarFileURL

        public URL getJarFileURL()
        返回此连接的Jar文件的URL。
        结果
        此连接的Jar文件的URL。
      • getEntryName

        public String getEntryName()
        返回此连接的条目名称。 如果与此连接对应的JAR文件URL指向JAR文件而不是JAR文件条目,则此方法返回null。
        结果
        此连接的条目名称(如果有)。
      • getJarFile

        public abstract JarFile getJarFile()
                                    throws IOException
        返回此连接的JAR文件。
        结果
        此连接的JAR文件。 如果连接是与JAR文件条目的连接,则返回JAR文件对象
        异常
        IOException - 如果在尝试连接到此连接的JAR文件时发生IOException。
        另请参见:
        URLConnection.connect()
      • getManifest

        public Manifest getManifest()
                             throws IOException
        返回此连接的Manifest,如果没有,则返回null。
        结果
        与此连接的JAR文件对象对应的清单对象。
        异常
        IOException - 如果获取此连接的JAR文件会导致抛出IOException。
        另请参见:
        getJarFile()
      • getJarEntry

        public JarEntry getJarEntry()
                             throws IOException
        返回此连接的JAR条目对象(如果有)。 如果与此连接对应的JAR文件URL指向JAR文件而不是JAR文件条目,则此方法返回null。
        结果
        此连接的JAR条目对象,如果此连接的JAR URL指向JAR文件,则返回null。
        异常
        IOException - 如果获取此连接的JAR文件会导致抛出IOException。
        另请参见:
        getJarFile()getJarEntry()
      • getAttributes

        public Attributes getAttributes()
                                 throws IOException
        如果此连接的URL指向JAR文件条目,则返回此连接的Attributes对象,否则返回null。
        结果
        如果此连接的URL指向JAR文件条目,则为此连接的Attributes对象,否则为null。
        异常
        IOException - 如果获取JAR条目导致抛出IOException。
        另请参见:
        getJarEntry()
      • getMainAttributes

        public Attributes getMainAttributes()
                                     throws IOException
        返回此连接的JAR文件的主要Attributes。
        结果
        此连接的JAR文件的主要属性。
        异常
        IOException - 如果获取清单导致抛出IOException。
        另请参见:
        getJarFile()getManifest()
      • getCertificates

        public Certificate[] getCertificates()
                                      throws IOException
        如果此连接的URL指向JAR文件条目,则返回此连接的Certificate对象,否则返回null。 只有在通过读取输入流完全验证连接之后才能调用此方法,直到达到流的末尾。 否则,此方法将返回null
        结果
        如果此连接的URL指向JAR文件条目,则为此连接的Certificate对象,否则为null。
        异常
        IOException - 如果获取JAR条目导致抛出IOException。
        另请参见:
        getJarEntry()