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 :
- getJarFileURL() : Devuelve la URL del archivo jar para esta conexión.
Syntax :public URL getJarFileURL()
- 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()
- getJarFile() : Devuelve el archivo jar para esta conexión.
Syntax :public abstract JarFile getJarFile() throws IOException Throws : IOException : If IO exception occurs during connection
- 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.
- 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
- 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
- getMainAttributes() : Devuelve los atributos principales de esta conexión.
Syntax :public Attributes getMainAttributes() throws IOException
- 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