Foro sobre Java SE > Ejecutar una aplicacion que contiene varios *.jar
Hola ju4n, te comento cómo creo que funciona.
Uno, en una aplicación java puedes tener un jar o un millón de jars, uno de ellos debe contener el main que ejecutará a los demás, estando los demás únicamente en el classpath.
Algo así como:
1) Cuál es la clase que arranca el programa (el main del cual el programa ejecutará).
2) Que jar's forman parte del classpath correspondiente.
Un saludo,
Ok...eso lo entendi...y la aplicacion trae este *.bat para iniciar en windows
start javaw -classpath ../lib/java-remote-control.jar;../lib/xapp.jar;../lib/open-forum.jar;../lib/core.jar;../lib/js.jar org.one.stone.soup.xapp.application.jrc.client.XappJavaRemoteControlClient ../config/
donde se ve que el main esta en
org.one.stone.soup.xapp.application.jrc.client.XappJavaRemoteControlClient
lo que he tratado de hacer, sin exito, es crear un script para arrancarla en linux...
Gracias por la atencion!!!
Hola ju4n, gracias a ti por participar.
Por favor, prueba el siguiente comando:
java -cp "../lib/java-remote-control.jar;../lib/xapp.jar;../lib/open-forum.jar;../lib/core.jar;../lib/js.jar" org.one.stone.soup.xapp.application.jrc.client.XappJavaRemoteControlClient ../config/
Asegúrate que tienes instalada la versión de Java en el entorno unix.
Un saludo,
Jaime.
Nada brother....llevo tiempo tratando de varias formas y no he podido hacer que funcione...
efectivamente como usted indica en el <man java> se explica..
-cp classpath
Specify a list of directories, JAR archives, and ZIP archives to search for class files. Class path entries are separated by colons (:). Specifying -classpath or -cp overrides any setting of the CLASSPATH environment variable.
If -classpath and -cp are not used and CLASSPATH is not set, the user class path consists of the current directory (.).
As a special convenience, a class path element containing a basename of * is considered equivalent to specifying a list of all the files in the directory with the extension .jar or .JAR (a java program cannot tell the difference between the two invocations).
For example, if directory foo contains a.jar and b.JAR, then the class path element foo/* is expanded to a A.jar:b.JAR, except that the order of jar files is unspecified. All jar files in the specified directory, even hidden ones, are included in the list. A classpath entry consisting simply of * expands to a list of all the jar files in the current directory. The CLASSPATH environment variable, where defined, will be similarly
expanded. Any classpath wildcard expansion occurs before the Java virtual machine is started -- no Java program will ever see unexpanded wildcards except by querying the environment. For example; by invoking System.getenv("CLASSPATH").
trate asi:
java -cp "../lib/java-remote-control.jar;../lib/xapp.jar;../lib/open-forum.jar;../lib/core.jar;../lib/js.jar" org.one.stone.soup.xapp.application.jrc.client.XappJavaRemoteControlClient ../config/
asi:
java -cp "../lib/*" org.one.stone.soup.xapp.application.jrc.client.XappJavaRemoteControlClient ../config/
asi:
java -cp "../lib/*":org.one.stone.soup.xapp.application.jrc.client.XappJavaRemoteControlClient:../config/
asi:
java -cp "../lib/*" org.one.stone.soup.xapp.application.jrc.client.XappJavaRemoteControlClient "../config/"
en fin....y otras mas variaciones y en algunas tira:
Exception in thread "main" java.lang.NoClassDefFoundError: org/one/stone/soup/xapp/application/jrc/client/XappJavaRemoteControlClient
y en otras, simplemente no reconoce la orden completa
aclaro que ya explore el proyecto y efectivamente la clase que contiene el main pertenece a la ruta anterior...
Gracias por la colaboracion...
Buenas compañeros...
Traigo una duda que no se si es tonta o en verdad es desconocimiento para muchos...
descargue una aplicacion (concretamente http://code.google.com/p/java-remote-control/ ) resulta que la app tiene 3 directorios asi:
bin
-run-jrc-client.bat
-run-jrc-server.bat
config
+plugins
-client.data.xml
-jrc-client.xapp
-jrc-server.xapp
-server.data.xml
lib
-core.jar
-java-remote-control.jar
-js.jar
-open-forum.jar
-xapp.jar
Para windows solo es correr los archivos *.bat y la aplicacion inicia normalmente...aunque me gustaria comprender como funciona este script...
El problema que tengo es que no he conseguido que corra desde linux...En la web indican estos tres pasos:
The process to run the client on a PC running UNIX is as follows
Rename the start.bat file to run-jrc-client.sh
Set the file as executable
Run the run-jrc-client.sh script
pero a simple vista se puede ver que no funciona porque en linux el comando <start> no existe...
He tratado con el comando <java -jar> y <java -cp *.jar> pero no funciona...
Si alguien tiene conocimiento me gustaria que me ilustrara un poco sobre como debo crear el script para arrancar esta app en linux...y una corta explicacion de como funciona esto de ejecutar una app desde varios *.jar
Mil gracias por la atencion....