java - programa - empaquetar jar en exe
Ejecute.jar desde archivo por lotes (14)
De la misma manera que lo haría en la consola de comandos. Copie exactamente esos comandos en el archivo por lotes.
.jar
un archivo .jar
ejecutable. ¿Cómo puedo ejecutar el .jar
usando un archivo por lotes sin mencionar una ruta de clase?
Debe asegurarse de especificar el classpath en el archivo MANIFEST.MF. Si está utilizando Maven para hacer el empaque, puede configurar los siguientes complementos:
1. maven-depedency-plugin:
2. maven-jar-plugin:
<plugin>
<artifactId>maven-dependency-plugin</artifactId>
<version>${version.plugin.maven-dependency-plugin}</version>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/lib</outputDirectory>
<overWriteReleases>false</overWriteReleases>
<overWriteSnapshots>true</overWriteSnapshots>
<includeScope>runtime</includeScope>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<version>${version.plugin.maven-jar-plugin}</version>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
<addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
</manifest>
</archive>
</configuration>
</plugin>
El archivo de manifiesto resultante se empaquetará en el archivo ejecutable bajo META-INF y se verá así:
Manifest-Version: 1.0
Implementation-Title: myexecjar
Implementation-Version: 1.0.0-SNAPSHOT
Built-By: razvanone
Class-Path: lib/first.jar lib/second.jar
Build-Jdk: your-buildjdk-version
Created-By: Maven Integration for Eclipse
Main-Class: ro.razvanone.MyMainClass
El script de Windows se vería así:
@echo on
echo "Starting up the myexecjar application..."
java -jar myexecjar-1.0.0-SNAPSHOT.jar
Esta debería ser una configuración completa para construir un archivo ejecutable usando Maven :)
Deberías probar este:
java -cp youJarName.jar your.package.your.MainClass
En Windows puede usar el siguiente comando.
start javaw -jar JarFile.jar
Al hacerlo, la Ventana del símbolo del sistema no permanece abierta.
Hay una solución para esto que no requiere especificar la ruta del archivo jar dentro de .bat. Esto significa que el contenedor puede moverse en el sistema de archivos sin cambios, siempre que el archivo .bat siempre se encuentre en el mismo directorio que el contenedor. El código .bat es:
java -jar %~dp0myjarfile.jar %*
Básicamente, %0
se expandiría a la ruta completa de .bat, y %~dp0
expandiría a la ruta completa de .bat, excepto el nombre de archivo. Entonces %~dp0myjarfile.jar
es la ruta completa de myjarfile.jar colocada con el archivo .bat. %*
tomará todos los argumentos dados al .bat y lo pasará al programa Java. (ver: http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/percent.mspx?mfr=true )
Mi comprensión de la pregunta es que el OP está intentando evitar especificar un camino de clase en su línea de comando. Puede hacer esto colocando el class-path en el archivo Manifest.
En el manifiesto:
Class-Path: Library.jar
Este documento proporciona más detalles:
http://docs.oracle.com/javase/tutorial/deployment/jar/downman.html
Para crear un jar utilizando un archivo de manifiesto denominado MANIFEST, puede usar el siguiente comando:
jar -cmf MANIFEST MyJar.jar <class files>
Si especifica rutas de clase relativas (es decir, otros archivos jar en el mismo directorio), puede mover el archivo jar y el archivo por lotes mencionado en la respuesta de mdm seguirá funcionando.
Para ejecutar un archivo .jar
desde la línea de comando, simplemente use:
java -jar YourJar.jar
Para hacer esto como un archivo por lotes, simplemente copie el comando en un archivo de texto y guárdelo como .bat
:
@echo off
java -jar YourJar.jar
El @echo off
solo asegura que el segundo comando no se imprime.
Pasos 1- Crea / exporta un archivo jar ejecutable fuera de tu proyecto.
2- Crea un archivo .bat con el siguiente contenido
@Echo off
set classpath="c:/jars/lib/*****.jar;c:/jars/lib/*****.jar;c:/extJars/****.jar"
java -cp %classpath%;c:/apps/applName/yourJar.jar com.****.****.MainMethod args1 args2 ...
@pause
Se requiere 3- class class para cualquier tarro externo que esté utilizando.
4- Coloque el archivo .bat y el archivo jar en la misma carpeta.
5- Según el comando java -cp, indique la ubicación exacta del archivo jar y el nombre completo del método principal, seguido de la lista de argumentos según los requisitos.
Puede crear un archivo por lotes con extensión .bat
con los siguientes contenidos
Use java
para .jar
que no tiene UI y es una aplicación de línea de comando
@ECHO OFF
start java -jar <your_jar_file_name>.jar
Usa javaw
para .jar
que tiene una interfaz de usuario
@ECHO OFF
start javaw -jar <your_jar_file_name>.jar
Asegúrese de que su JAVA_HOME
esté configurado en las variables de entorno.
Si desea que un archivo por lotes ejecute un archivo jar, cree un archivo en blanco llamado runjava.bat con los contenidos:
java -jar "C:/myjarfile.jar"
Si hace doble clic en el archivo .jar en Windows Explorer, entonces debería poder usar esto:
start myapp.jar
en tu archivo por lotes
El comando de start
Windows hace exactamente lo mismo detrás de las escenas como hacer doble clic en un archivo.
puede usar el siguiente comando en el archivo .bat recién creado:
@echo off
call C:/SWDTOOLS/**PATH/TO/JAVA**/java_1.7_64/jre/bin/java -jar workspace.jar
Indique la ruta de Java si hay múltiples versiones de Java instaladas en el sistema y asegúrese de haber especificado el método principal y creado el archivo de manifiesto al crear el archivo jar.
cd "Your File Location without inverted commas"
ejemplo: cd C: / Users ***** / Desktop / directory / target
java -jar myjar.jar
ejemplo bat archivo se ve así:
@echo OFF
cd C:/Users/****/Desktop/directory/target
java -jar myjar.jar
Esto funcionará bien.
java -jar "C://myjarfile.jar"
Es posible que deba agregar "//"
al comando. ¡Prueba esto!