Clase Java.net.JarURLConnection en Java

Requisito previo: archivos JAR en Java
¿Qué es un archivo Jar?
JavaArchive (JAR) agrupa todas las clases en un solo paquete. Dado que el archivo está comprimido y se puede descargar en una sola conexión HTTP, a menudo es más rápido descargar el archivo que descargar clases individuales. Aunque jar agrupa todas las clases, sus nombres completamente clasificados se pueden usar para hacer referencia a clases individuales en caso de necesidad. Java proporciona varios mecanismos para extraer información de un archivo jar. Este artículo presenta una de las formas de usar la clase JarURLConnection.
Esta clase representa una conexión URL a un archivo, entrada o directorio jar. Se puede usar en escenarios cuando el programador sabe que la URL hace referencia a una entrada de jar y necesita una funcionalidad específica de jar.
Sintaxis de una URL Jar: –
Jar URL comienza con la URL general que apunta a la ubicación del archivo jar. Luego, el protocolo » jar: » tiene el prefijo y, finalmente, » !/ » y la ruta al archivo dentro del archivo jar tienen el sufijo al final de esta URL. Por ejemplo,

jar:http://www.abcd.com/networking.jar!/com/foo/example.class

Si la parte de la ruta no se usa, la URL apunta al archivo jar completo. Por ejemplo,

jar:http://www.abcd.com/networking.jar!/

Constructor: crea una conexión de URL jar a la URL especificada.

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.

Métodos :

  1. getJarFileURL() : Devuelve la URL del archivo jar para esta conexión.
    Syntax :public URL getJarFileURL()
  2. getEntryName() : Devuelve el nombre de entrada para esta conexión, o nulo si apunta a un archivo jar en lugar de un archivo de entrada jar.
    Syntax :public String getEntryName()
  3. getJarFile() : Devuelve el archivo jar para esta conexión.
    Syntax :public abstract JarFile getJarFile()
                                throws IOException
    Throws : 
    IOException : If IO exception occurs during connection
  4. getManifest() : Devuelve el manifiesto para esta conexión, o nulo si no existe ninguno. El manifiesto es un archivo especial que puede contener información sobre los archivos empaquetados en un archivo JAR.
    Syntax :public Manifest getManifest()
                         throws IOException
    Throws :
    IOException : If IO exception is thrown while connecting to the url.
  5. getJarEntry() : Devuelve el objeto de entrada JAR para esta conexión. El punto de entrada para una aplicación Java suele ser la clase que tiene el método public static void main(String args[]) . Este método devuelve un valor nulo si la URL apunta a un archivo jar en lugar de a una entrada.
    Syntax : public JarEntry getJarEntry()
                         throws IOException
  6. getAttributes() : Devuelve atributos para esta conexión si la URL apunta al archivo de entrada jar. Para obtener más información sobre los atributos, visite Tutoriales oficiales de Java .
    Syntax :public Attributes getAttributes()
                             throws IOException
  7. getMainAttributes() : Devuelve los atributos principales de esta conexión.
    Syntax :public Attributes getMainAttributes()
                                 throws IOException
  8. getCertificates() : Devuelve el objeto de certificado para esta conexión si apunta al archivo de entrada jar.
    Syntax : public Certificate[] getCertificates()
                                  throws IOException

El siguiente programa asume que tenemos un archivo jar en la URL codificada en el programa. Como se puede ver, la URL codificada apunta a un archivo en el sistema solamente, esta clase se puede usar cuando se usan archivos jar en la red especificando la URL correcta para el archivo.
Implementación 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();
        }
  
    }
  
}

Producción :

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

Artículo relacionado: Trabajar con archivos JAR y Manifest en Java

Referencias: Libro de documentación oficial de Java
: Programación en red de Java, por Elliotte Rusty Harold

Este artículo es una contribución de Rishabh Mahrsee . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a contribuir@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.

Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *