APIdia Launch Partner
Top Description Fields Constructors Methods
java.net

public abstract Class JarURLConnection

extends URLConnection
Class Inheritance
Known Direct Subclasses
sun.net.www.protocol.jar.JarURLConnection
Imports
java.io.IOException, java.util.jar.JarFile, .JarEntry, .Attributes, .Manifest, sun.net.www.ParseUtil

A URL Connection to a Java ARchive (JAR) file or an entry in a JAR file.

The syntax of a JAR URL is:

jar:<url>!/{entry}

for example:

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

Jar URLs should be used to refer to a JAR file or entries in a JAR file. The example above is a JAR URL which refers to a JAR entry. If the entry name is omitted, the URL refers to the whole JAR file: jar:http://www.foo.com/bar/baz.jar!/

Users should cast the generic URLConnection to a JarURLConnection when they know that the URL they created is a JAR URL, and they need JAR-specific functionality. For example:

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

JarURLConnection instances can only be used to read from JAR files. It is not possible to get a java.io.OutputStream to modify or write to the underlying JAR file using this class.

Examples:

A Jar entry
jar:http://www.foo.com/bar/baz.jar!/COM/foo/Quux.class
A Jar file
jar:http://www.foo.com/bar/baz.jar!/
A Jar directory
jar:http://www.foo.com/bar/baz.jar!/COM/foo/

!/ is referred to as the separator.

When constructing a JAR url via new URL(context, spec), the following rules apply:

Author
Benjamin Renaud
Since
1.2
See Also
java.net.URL, java.net.URLConnection, java.util.jar.JarFile, java.util.jar.JarInputStream, java.util.jar.Manifest, java.util.zip.ZipEntry

Field Summary

Modifier and TypeField and Description
private final String
private final URL
protected URLConnection
jarFileURLConnection

The connection to the JAR file URL, if the connection has been initiated.

Inherited from java.net.URLConnection:
allowUserInteractionconnecteddoInputdoOutputifModifiedSinceurluseCaches

Constructor Summary

AccessConstructor and Description
protected
JarURLConnection(URL
the URL
url
)

Creates the new JarURLConnection to the specified URL.

Method Summary

Modifier and TypeMethod and Description
public Attributes

Returns:

the Attributes object for this connection if the URL for it points to a JAR file entry, null otherwise.
getAttributes
()

Return the Attributes object for this connection if the URL for it points to a JAR file entry, null otherwise.

public Certificate[]

Returns:

the Certificate objects for this connection if the URL for it points to a JAR file entry, null otherwise.
getCertificates
()

Returns the Certificate objects for this connection if the URL for it points to a JAR file entry, null otherwise.

public String

Returns:

the entry name for this connection, if any.
getEntryName
()

Return the entry name for this connection.

public JarEntry

Returns:

the JAR entry object for this connection, or null if the JAR URL for this connection points to a JAR file.
getJarEntry
()

Return the JAR entry object for this connection, if any.

public abstract JarFile

Returns:

the JAR file for this connection. If the connection is a connection to an entry of a JAR file, the JAR file object is returned
getJarFile
()

Return the JAR file for this connection.

public URL

Returns:

the URL for the Jar file for this connection.
getJarFileURL
()

Returns the URL for the Jar file for this connection.

public Attributes

Returns:

the main Attributes for the JAR file for this connection.
getMainAttributes
()

Returns the main Attributes for the JAR file for this connection.

public Manifest

Returns:

the manifest object corresponding to the JAR file object for this connection.
getManifest
()

Returns the Manifest for this connection, or null if none.

private static String

Returns:

the decoded entry name, or null if this URL has no entry name
parseEntryName
(String
the URL spec of this connection
spec
,
int
the index of the '!/' separator
separatorIndex
)

Parse the entry name (if any) of this JarURLConnection

private static URL

Returns:

a URL to the JAR file this connection reads from
parseJarFileURL
(String
the URL spec of this connection
spec
,
int
the index of the '!/' separator
separatorIndex
,
URL
the URL passed to the constructor
connectionURL
)

Parse the URL of the JAR file backing this JarURLConnection, appending any #runtime fragment as neccessary

Inherited from java.net.URLConnection:
addRequestPropertyconnectgetAllowUserInteractiongetConnectTimeoutgetContentgetContentgetContentEncodinggetContentLengthgetContentLengthLonggetContentTypegetDategetDefaultAllowUserInteractiongetDefaultRequestPropertygetDefaultUseCachesgetDefaultUseCachesgetDoInputgetDoOutputgetExpirationgetFileNameMapgetHeaderFieldgetHeaderFieldgetHeaderFieldDategetHeaderFieldIntgetHeaderFieldKeygetHeaderFieldLonggetHeaderFieldsgetIfModifiedSincegetInputStreamgetLastModifiedgetOutputStreamgetPermissiongetReadTimeoutgetRequestPropertiesgetRequestPropertygetURLgetUseCachesguessContentTypeFromNameguessContentTypeFromStreamsetAllowUserInteractionsetConnectTimeoutsetContentHandlerFactorysetDefaultAllowUserInteractionsetDefaultRequestPropertysetDefaultUseCachessetDefaultUseCachessetDoInputsetDoOutputsetFileNameMapsetIfModifiedSincesetReadTimeoutsetRequestPropertysetUseCachestoString

Field Detail

entryNameback to summary
private final String entryName
jarFileURLback to summary
private final URL jarFileURL
jarFileURLConnectionback to summary
protected URLConnection jarFileURLConnection

The connection to the JAR file URL, if the connection has been initiated. This should be set by connect.

Constructor Detail

JarURLConnectionback to summary
protected JarURLConnection(URL url) throws MalformedURLException

Creates the new JarURLConnection to the specified URL.

Parameters
url:URL

the URL

Exceptions
MalformedURLException:
if no legal protocol could be found in a specification string or the string could not be parsed.

Method Detail

getAttributesback to summary
public Attributes getAttributes() throws IOException

Return the Attributes object for this connection if the URL for it points to a JAR file entry, null otherwise.

Returns:Attributes

the Attributes object for this connection if the URL for it points to a JAR file entry, null otherwise.

Exceptions
IOException:
if getting the JAR entry causes an IOException to be thrown.
See Also
getJarEntry
getCertificatesback to summary
public Certificate[] getCertificates() throws IOException

Returns the Certificate objects for this connection if the URL for it points to a JAR file entry, null otherwise. This method can only be called once the connection has been completely verified by reading from the input stream until the end of the stream has been reached. Otherwise, this method will return null.

The returned certificate array comprises all the signer certificates that were used to verify this entry. Each signer certificate is followed by its supporting certificate chain (which may be empty). Each signer certificate and its supporting certificate chain are ordered bottom-to-top (i.e., with the signer certificate first and the (root) certificate authority last).

API Note

The verification process does not include validating or establishing trust in the code signers. A caller should perform additional checks, such as using a java.security.cert.CertPathValidator to validate each signer's certificate chain, and determining whether to trust the entry signed by the signers.

Returns:Certificate[]

the Certificate objects for this connection if the URL for it points to a JAR file entry, null otherwise.

Exceptions
IOException:
if getting the JAR entry causes an IOException to be thrown.
See Also
getJarEntry
getEntryNameback to summary
public String getEntryName()

Return the entry name for this connection. This method returns null if the JAR file URL corresponding to this connection points to a JAR file and not a JAR file entry.

Returns:String

the entry name for this connection, if any.

getJarEntryback to summary
public JarEntry getJarEntry() throws IOException

Return the JAR entry object for this connection, if any. This method returns null if the JAR file URL corresponding to this connection points to a JAR file and not a JAR file entry.

Returns:JarEntry

the JAR entry object for this connection, or null if the JAR URL for this connection points to a JAR file.

Exceptions
IOException:
if getting the JAR file for this connection causes an IOException to be thrown.
See Also
getJarFile, getJarEntry
getJarFileback to summary
public abstract JarFile getJarFile() throws IOException

Return the JAR file for this connection.

Returns:JarFile

the JAR file for this connection. If the connection is a connection to an entry of a JAR file, the JAR file object is returned

Exceptions
IOException:
if an IOException occurs while trying to connect to the JAR file for this connection.
See Also
connect
getJarFileURLback to summary
public URL getJarFileURL()

Returns the URL for the Jar file for this connection.

Returns:URL

the URL for the Jar file for this connection.

getMainAttributesback to summary
public Attributes getMainAttributes() throws IOException

Returns the main Attributes for the JAR file for this connection.

Returns:Attributes

the main Attributes for the JAR file for this connection.

Exceptions
IOException:
if getting the manifest causes an IOException to be thrown.
See Also
getJarFile, getManifest
getManifestback to summary
public Manifest getManifest() throws IOException

Returns the Manifest for this connection, or null if none.

Returns:Manifest

the manifest object corresponding to the JAR file object for this connection.

Exceptions
IOException:
if getting the JAR file for this connection causes an IOException to be thrown.
See Also
getJarFile
parseEntryNameback to summary
private static String parseEntryName(String spec, int separatorIndex)

Parse the entry name (if any) of this JarURLConnection

Parameters
spec:String

the URL spec of this connection

separatorIndex:int

the index of the '!/' separator

Returns:String

the decoded entry name, or null if this URL has no entry name

parseJarFileURLback to summary
private static URL parseJarFileURL(String spec, int separatorIndex, URL connectionURL) throws MalformedURLException

Parse the URL of the JAR file backing this JarURLConnection, appending any #runtime fragment as neccessary

Parameters
spec:String

the URL spec of this connection

separatorIndex:int

the index of the '!/' separator

connectionURL:URL

the URL passed to the constructor

Returns:URL

a URL to the JAR file this connection reads from

Annotations
@SuppressWarnings:deprecation
Exceptions
MalformedURLException:
if a malformed URL is found