Java - generar exe o jar

 
Vista:

generar exe o jar

Publicado por tea (1 intervención) el 11/10/2002 17:48:13
Tengo un programa java que utiliza una libreria .jar,para su ejecucion, no incluida en ninguna distribución; es decir para ejecutarlo tengo que hacer algo como esto:

Compilo:
javac -classpath d:\\midir\\archivo.jar programa.java
Ejecuto:
java -classpath .;d:\\midir\\archivo.jar programa argumento1

Mi problema es que necesito realizar este proceso automaticamente. Estube mirando y generar un archivo .exe no parece la opcion mas popular (por principios java). Parece que se impone la opcion de generar
un jar e instalar la maquina virtual java en el ordenador que lo ejecute.

En cualquier caso, ¿como puedo hacer esto?, ¿Como puedo ejecutar mi programa con una sola llamada y que siga utilizando las clases del archivo jar que necesita? El programa se va a ejecutar en mi maquina donde ya tengo instalada la Jre y dipongo de la libreria .jar.

Supongo que es una duda mil veces hecha, pero disculpas soy nuevo en esto.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:generar exe o jar

Publicado por gabriel bonsoir (38 intervenciones) el 11/10/2002 19:15:19
Si la verdad que es mucho más conveniente, por lo menos en mi opinion, que generes un archivo .jar. No se con que herramienta de desarrollo estas trabajando, pero si lo vas a crear con la jdk de sun, podes hacerlo haciendo esto.
jar cmf MANIFEST.MF elNombreQueQuieras.jar elArchivoODirectorioQuevaya

Pero bueno que es esto, jar obviamente es la herramienta que te genera archivos .jar cmf es para que te cree un archivo nuevo con tu propio MANIFEST.MF
Que es el MANIFEST. Es simplemente un archivo de texto donde le aclaras al .jar como tiene que funcionar, por ejemplo la clase que tiene el main() y va a ejecutar cada vez que empieze a correr, se le puede dar un classpath para que te encuentre la libreria .jar que tenes y algunas cosas de ese estilo.
Lo que tenes que tener cuidado y talvez le tengas que agregar a tu codigo, dependiendo de con que herramienta estas trabajando(por ejemplo el netbeans ya te lo hace solo) es que si vas a incluir un directorio al .jar que generalmenete es lo más comun porque ahi adentro tendras todas tus clases. tiene que estar declarado el paquete al que pertenecen tus clases asi como en que paquete esta tu clase Main en el MANIFEST.
No te preocupes, es mucho más facil de lo que parece con mi mala explicacion :)
La cosa es simplemente asi supongamos que tenes todas tus clases en el directorio proyecto/bin
y que cuando hagas el jar entonces lo vas a crear asi
jar cmf MANIFEST.MF proyecto.jar proyecto
en ese caso en tus clases debe estar declarado que pertenecen al paquete proyectos.bin y se hace asi
package proyecto.bin;
y eL archivo MANIFEST.MF quedaria asi
Main-Class: proyecto.bin.TuClaseMain
Class-Path: /lib/comoSeLlame.jar

Con eso solo alcanza, el primer renglon obviomente le dice cual es la clase que tiene que ejecutar y el segundo lo da el path del la libreria .jar que nesecitas para tu aplicacion. En este caso por haberle dado el path /lib/comoSeLlame.jar a la libreria comoSeLLame.jar debe estar en el directorio lib y el directorio lib debe estar en el mismo directorio donde dejes el .jar nuevo que acabas de crear.

Y no se me ocurre nada que me este olvidando ahora pero cualquier problema que tengas o que no se haya entendido pregunta otra vez y voy a intentar ser más claro.
Saludos
Gabriel
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:generar exe o jar

Publicado por tea (1 intervención) el 12/10/2002 18:14:44
Bien, seguí "mas o menos" los pasos que me indicastes, pero algo debí de hacer mal. Primero tengo mi aplicacion en el directorio bin del jdk. Mi librería jar está en un directorio lib dentro de bin: /lib/mijar.jar. Hago lo siguiente:

Compilo la aplicación java:

javac -classpath .\lib\mijar.jar aplicacion.java

Edito un archivo MANIFEST.MF en el mismo directorio bin, de la siguiente forma:

Main-Class: aplicacion
Class-Path: /lib/FPJni.jar

Estando todo en el directorio bin (por ahora estoy probando), menos la libreria que tengo en el directorio /lib, genero el jar:

Jar cmf MANIFEST.MF proyecto.jar aplicacion.class

Me genera el archivo proyecto.jar que quería.Lo abro con el winzip y veo que esta formado por el archivo aplicacion.class y el MANIFEST.MF, siendo este ultimo de la siguiente forma:

Manifest-Version: 1.0
Main-Class: BACJavaApiDemo
Created-By: 1.2.2 (Sun Microsystems Inc.)
Class-Path: /lib/FPJni.jar

Todo parece estar bien pero ejecuto el proyecto.jar (lo ejecuto en el mismo directorio bin) y no parece hacer nada (de hecho no hace nada). Si ejecuto aplicacion.cass con el programa java dandole el classpath si que hace lo que tiene que hacer. Alguien sabe donde me equivoco?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:generar exe o jar

Publicado por gabriel (38 intervenciones) el 12/10/2002 22:04:00
mmm, en principio parece que estas haciendo las cosas bien. No te tira ningun error para poder verlo o simplemente se queda clavado? Si tira algun error decimelo que es mas facil saber que pasa sino son muchas suposiciones(en caso de que lo estes ejecutando en windows con doble click si tiene cualquier problema no lo vez solo para de correr, si es asi intenta tirarlo desde consola para verlo)
Como lo estas ejecutando mira que los archivos .jar no corren si le haces "java archivo.jar" tiene que ser "java -jar archivo.jar".
Y en principio tiene que funcionar en cualquier sistema, pero por curiosidad para probarlo yo en que operativo estas trabajando.
Y ya algo que no tiene nada que ver con tu consulta te recomiendo que incluso las pruebas las hagas en tu propio directorio porque una no hay problema para cuando se van acumulando los fuentes es mejor tenerlos ordenados para no perderse.

Saludos y cualquier dato que puedas dar si es que no lo podes hacer funcionar puede servir para encontrar el problema asi que cualquier cosa segui preguntando.
Suerte
Gabriel
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:generar exe o jar

Publicado por tea (3 intervenciones) el 15/10/2002 00:56:40
Aaaaja, ya lo tengo. Siempre esta bien saber que se ha de usar java -jar archivo.jar. Yo probaba, simplemente con archivo.jar, (como es un ejecutable). Estoy trabajando en windows2000 y al hacer doble clic no ocurría nada, efectivamente, y probaba para mirar el fallo con llamar desde consola a archivo.jar y, claro tampoco pasaba nada.

Acabo de probar con java -jar archivo.jar y me salía un error porque no encontraba la clase principal. Modifique el MANIFEST.MF y me funcionó correctamente. Ahora tb funciona con doble clic (como debe de ser).

Gracias por guiarme un poco por este tema nuevo para mí. Ya me voy
aclarando un poco más. Un Saludo y gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar