Cómo usar clases de.¿archivos jar?


He leído los tutoriales de Java sobre Sun para archivos JAR, pero todavía no puedo encontrar una solución para mi problema. Necesito usar una clase de un archivo jar llamado jtwitter.jar, descargué el archivo, y traté de ejecutarlo (me enteré ayer que .los archivos jar se pueden ejecutar haciendo doble clic sobre ellos) y Vista me dio un error diciendo "No se pudo cargar el atributo de manifiesto de la clase Principal desde [path]/jtwitter.frasco".

El tipo que codificó el .el archivo jar quiere que lo importe, pero dónde lo almaceno .frasco archivo para importarlo en mi código? Traté de poner tanto el .jar file y mi .archivo java en el mismo directorio, no funcionó.

El archivo para el que intento trabajar está aquí: http://www.winterwell.com/software/jtwitter.php

Estoy usando JCreator LE.

 114
Author: Gaurav Dadhania, 2009-01-20

5 answers

No todos los archivos jar son ejecutables.

Ahora, necesita importar las clases, que están allí debajo del jar, en su archivo java. Por ejemplo,

import org.xml.sax.SAXException;

Si estás trabajando en un IDE, entonces deberías referir su documentación. O al menos especifique cuál está utilizando aquí en este hilo. Sin duda nos permitiría ayudarle aún más.

Y si no estás usando ningún IDE, entonces por favor mira la opción javac-cp. Sin embargo, es mucho mejor idea empaquetar su programa en un archivo jar, e incluye todos los jarnecesarios dentro de eso. Entonces, con el fin de ejecutar su jar, como,

java -jar my_program.jar

Debe tener un archivo META-INF/MANIFEST.MF en su jar. Ver aquí, cómo hacerlo.

 26
Author: Adeel Ansari,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 11:54:27

Digamos que necesitamos usar la clase Classname que está contenida en el archivo jar org.example.jar

Y su fuente está en el archivo mysource.java Así:

import org.example.Classname;

public class mysource {
    public static void main(String[] argv) {
    ......
   }
}

Primero, como ves, en tu código tienes que importar las clases. Para hacer eso necesitas import org.example.Classname;

En segundo lugar, cuando se compila la fuente, se tiene que hacer referencia al archivo jar.

Tenga en cuenta la diferencia en el uso de : y ; al compilar

  • Si está bajo una operación similar a Unix sistema:

    javac -cp '.:org.example.jar' mysource.java
    
  • Si estás bajo windows:

    javac -cp .;org.example.jar mysource.java
    

Después de esto, se obtiene el archivo de código de bytes mysource.class

Ahora puedes ejecutar esto:

  • Si se encuentra bajo un sistema operativo tipo unix:

    java -cp '.:org.example.jar' mysource
    
  • Si estás bajo windows:

    java -cp .;org.example.jar mysource
    
 149
Author: GabrieleV,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-02-10 17:57:41

Necesita agregar el archivo jar en el classpath. Para compilar su clase java:

javac -cp .;jwitter.jar MyClass.java

Para ejecutar su código (siempre que MyClass contenga un método principal):

java -cp .;jwitter.jar MyClass

Puede tener el archivo jar en cualquier lugar. Lo anterior funciona si el archivo jar está en el mismo directorio que el archivo java.

 10
Author: kgiannakakis,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-01-20 07:41:21

Como dice workmad3, necesitas que el archivo jar esté en tu classpath. Si está compilando desde la línea de comandos, eso significará usar el indicador-classpath. (Evite la variable de entorno CLASSPATH; es un dolor en el cuello IMO.)

Si está utilizando un IDE, por favor háganos saber cuál y podemos ayudarle con los pasos específicos de ese IDE.

 6
Author: Jon Skeet,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-01-20 07:40:38

Es necesario poner el .archivo jar en su classpath al compilar / ejecutar su código. A continuación, solo tiene que utilizar las importaciones estándar de las clases en el .frasco.

 5
Author: workmad3,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-01-20 07:38:19