先決條件 -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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。