先决条件 -Java 中的 JAR 文件
什么是 Jar 文件?
JavaArchive(JAR) 将所有类捆绑在一个包中。由于存档是压缩的并且可以在单个 HTTP 连接中下载,因此下载存档通常比下载单个类更快。尽管 jar 捆绑了所有类,但在需要时可以使用它们的完全分类名称来引用各个类。 Java 提供了多种从 jar 文件中提取信息的机制。本文介绍了使用 JarURLConnection 类的方法之一。
此类表示与 jar 文件、条目或目录的 URL 连接。当程序员知道 URL 引用 jar 条目并且需要 jar-specific 函数时,可以使用它。
Jar URL 的语法:-
Jar URL 以指向 jar 存档位置的通用 URL 开头。比 ”罐:” 协议为前缀,最后为“!/” 并且 jar 存档内文件的路径在此 URL 的末尾添加后缀。例如,
jar:http://www.abcd.com/networking.jar!/com/foo/example.class
如果不使用路径部分,则 URL 指向整个 jar 存档。例如,
jar:http://www.abcd.com/networking.jar!/
构造函数:创建到指定 URL 的 jar URL 连接。
Syntax :protected JarURLConnection(URL url) throws MalformedURLException Parameters : url : URL to a jar archive Throws : MalformedURLException: If no protocol identified or string could not be parsed.
方法:
- getJarFileURL():返回此连接的 jar 文件的 url。
Syntax :public URL getJarFileURL()
-
getEntryName():返回此连接的条目名称,如果它指向 jar 文件而不是 jar 条目文件,则返回 null。
Syntax :public String getEntryName()
- getJarFile():返回此连接的 jar 文件。
Syntax :public abstract JarFile getJarFile() throws IOException Throws : IOException : If IO exception occurs during connection
- getManifest():返回此连接的清单,如果不存在则返回 null。清单是一个特殊文件,可以包含有关打包在 JAR 文件中的文件的信息。
Syntax :public Manifest getManifest() throws IOException Throws : IOException : If IO exception is thrown while connecting to the url.
-
getJarEntry():返回此连接的 JAR 条目对象。 java应用程序的入口点通常是具有该方法的类公共静态无效主(字符串参数[])。如果 url 指向 jar 文件而不是条目,则此方法返回 null。
Syntax : public JarEntry getJarEntry() throws IOException
- getAttributes():如果 URL 指向 jar 条目文件,则返回此连接的属性。有关属性的更多信息,请访问官方 Java 教程.
Syntax :public Attributes getAttributes() throws IOException
- getMainAttributes():返回此连接的主要属性。
Syntax :public Attributes getMainAttributes() throws IOException
- getCertificates():如果该连接指向 jar 条目文件,则返回该连接的证书对象。
Syntax : public Certificate[] getCertificates() throws IOException
以下程序假设我们在程序中的 URL hard-coded 处有一个 jar 文件。可以看出,hard-coded URL 仅指向系统上的文件,通过为文件指定正确的 URL,可以在通过网络使用 jar 文件时使用此类。
Java实现:
// Java program to illustrate various
// jarURLConnection class methods
import java.io.IOException;
import java.net.JarURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.security.cert.Certificate;
import java.util.Arrays;
import java.util.Map.Entry;
import java.util.jar.Attributes;
import java.util.jar.JarEntry;
import java.util.jar.JarFile;
import java.util.jar.Manifest;
public class jarurltest
{
private final static String JAR_URL = "jar:file:/C:/Users/Rishabh/Desktop" +
"/testClass.jar!/test/testclass.class";
public static void main(String[] args) throws Exception
{
try {
// Create a URL that refers to a jar file in the file system
URL FileSysUrl = new URL(JAR_URL);
// Create a jar URL connection object
JarURLConnection jarURLConn = (JarURLConnection) FileSysUrl.openConnection();
// getJarFileURL() method
System.out.println("Jar file URL : " + jarURLConn.getJarFileURL());
// getEntryName() method
System.out.println("Entry Name : " + jarURLConn.getEntryName());
// getJarFile() method
JarFile jarFile = jarURLConn.getJarFile();
System.out.println("Jar Entry: " + jarURLConn.getJarEntry());
// getManifest() method
Manifest manifest = jarFile.getManifest();
System.out.println("Manifest :" + manifest.toString());
// getJarEntry() method
JarEntry jentry = jarURLConn.getJarEntry();
System.out.println("Jar Entry : " + jentry.toString());
// getAttributes() method
Attributes attr = jarURLConn.getAttributes();
System.out.println("Attributes : " + attr);
// getMainAttributes() method
Attributes attrmain = jarURLConn.getMainAttributes();
System.out.println("\nMain Attributes details: ");
for (Entry e : attrmain.entrySet())
{
System.out.println(e.getKey() + " " + e.getValue());
}
// getCertificates() method
Certificate cert[] = jarURLConn.getCertificates();
System.out.println("\nCertificates Info :" + Arrays.toString(cert));
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
输出:
Jar file URL : file:/C:/Users/Rishabh/Desktop/testClass.jar Entry Name : test/testclass.class Jar Entry: test/testclass.class Manifest :java.util.jar.Manifest@2f1a6037 Jar Entry : test/testclass.class Attributes : null Main Attributes details: Manifest-Version 1.0 Main-Class test.testclass Certificates Info :null
相关文章: 在 Java 中使用 JAR 和清单文件
参考:Official Java Documentation
书:Java 网络编程,作者:Elliotte Rusty Harold
相关用法
- Java Java.net.HttpURLConnection用法及代码示例
- Java Java.io.BufferedInputStream.available()用法及代码示例
- Java Java.io.BufferedInputStream.close()用法及代码示例
- Java Java.io.BufferedInputStream.read()用法及代码示例
- Java Java.io.BufferedInputStream.reset()用法及代码示例
- Java Java.io.BufferedInputStream.skip()用法及代码示例
- Java Java.io.BufferedOutputStream.flush()用法及代码示例
- Java Java.io.BufferedOutputStream.Write()用法及代码示例
- Java Java.io.BufferedReader.Close()用法及代码示例
- Java Java.io.BufferedReader.mark()用法及代码示例
- Java Java.io.BufferedReader.markSupported()用法及代码示例
- Java Java.io.BufferedReader.read()用法及代码示例
- Java Java.io.BufferedReader.readline()用法及代码示例
- Java Java.io.BufferedReader.ready()用法及代码示例
- Java Java.io.BufferedReader.reset()用法及代码示例
- Java Java.io.BufferedReader.skip()用法及代码示例
- Java Java.io.BufferedWriter.close()用法及代码示例
- Java Java.io.BufferedWriter.flush()用法及代码示例
- Java Java.io.BufferedWriter.newLine()用法及代码示例
- Java Java.io.BufferedWriter.write()用法及代码示例
- Java Java.io.ByteArrayInputStream.available()用法及代码示例
- Java Java.io.ByteArrayInputStream.close()用法及代码示例
- Java Java.io.ByteArrayInputStream.mark()用法及代码示例
- Java Java.io.ByteArrayInputStream.read()用法及代码示例
- Java Java.io.ByteArrayInputStream.reset()用法及代码示例
注:本文由纯净天空筛选整理自佚名大神的英文原创作品 Java.net.JarURLConnection class in Java。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。