2009-01-20 15 views
109

He leído los tutoriales de Java en 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 (descubrí ayer que los archivos .jar se pueden ejecutar haciendo doble clic en ellos) y Vista me dio un error diciendo " Error al cargar el atributo Manifiesto de clase principal de [ruta] /jtwitter.jar ".¿Cómo se usan las clases de los archivos .jar?

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

El archivo que estoy tratando de trabajar está Aquí: http://www.winterwell.com/software/jtwitter.php

estoy usando JCreator LE.

+13

¿Por qué hay un voto a favor? ¡En mi opinión, es una buena pregunta y hay información interesante en las respuestas! (+1) – guerda

Respuesta

26

No todos los archivos jar son ejecutables.

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

import org.xml.sax.SAXException; 

Si está trabajando en un IDE, debe consultar su documentación. O al menos especifique cuál está usando aquí en este hilo. Definitivamente nos permitiría ayudarlo más.

Y si no está utilizando ningún IDE, consulte la opción javac -cp. Sin embargo, es mucho mejor idea empaquetar su programa en un archivo jar, e incluir todos los jar necesarios dentro de eso. Luego, con el fin de ejecutar su jar, como,

java -jar my_program.jar 

usted debe tener un archivo META-INF/MANIFEST.MF en su jar. Consulte here, para obtener instrucciones.

5

Debe poner el archivo .jar en su classpath al compilar/ejecutar su código. Luego solo usa las importaciones estándar de las clases en .jar.

6

Como dice workmad3, necesita que el archivo jar esté en su 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, infórmenos cuál y le podemos ayudar con los pasos específicos de ese IDE.

+0

classpath env variable es útil si está usando scripts o algo así como firedaemon para ejecutar su aplicación. Es solo un dolor cuando lo usas globalmente :) – workmad3

+0

Todavía me gusta verlo explícitamente. –

+0

Acepto, me gusta verlo explícitamente. – J3r3myK

10

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

javac -cp .;jwitter.jar MyClass.java 

Para ejecutar su código (siempre que MiClase contiene un método main):

java -cp .;jwitter.jar MyClass 

que puede tener el archivo jar en cualquier lugar. El trabajo anterior si el archivo jar está en el mismo directorio que su archivo java.

142

Digamos que tenemos que utilizar la clase Classname que está contenida en el archivo jar org.example.jar

Y su fuente está en el archivo mysource.java De esta manera:

import org.example.Classname; 

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

En primer lugar, como se ve, en tu código tienes que importar las clases. Para hacerlo, necesita import org.example.Classname;

En segundo lugar, cuando compila la fuente, debe hacer referencia al archivo jar.

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

  • Si usted está bajo UNIX como sistema operativo:

    javac -cp '.:org.example.jar' mysource.java 
    
  • Si es menor de ventanas:

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

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

Ahora se puede ejecutar esto:

  • Si usted está bajo UNIX como sistema operativo:

    java -cp '.:org.example.jar' mysource 
    
  • Si es menor ventanas:

    java -cp .;org.example.jar mysource 
    
+4

¿Podría explicar esta notación un poco más? Esto solucionó mi problema, pero desafortunadamente no tengo IDEA lo que significa el punto y coma en este caso particular. – cemulate

+1

Esta historia de punto y coma/dos puntos me costó el día completo. Al menos lo encontré ahora, ¡gracias! –

+1

@ ChaseMeadors El [punto y coma] (http://technet.microsoft.com/en-us/library/cc772047.aspx)/[colon] (http://www.gnu.org/software/bash/manual/bashref .html # index-PATH) esencialmente significa "y" aquí. Está separando '.' de' org.example.jar'. – duozmo

Cuestiones relacionadas