style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">

Problema con JAR ejecutable

Hola gente:

Acabo de crear una app de java en netbeans 8.0, hice el JAR y lo abrí y todo parece bien.

El problema es que al intentarlo abrir en otra máquina me dice:
"Could not find the main class: [Programa] Program will exit."

Las otras máquinas tambien tienen JAVA y corren otros JAR sin ningún problema.

Alguna sujerencia??

Gracias.

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de Jose Manuel

Intenta comprobando el

Intenta comprobando el Manifest, no he sido muy entusiasta sobre el estudio y analisis de los archivos jar pero allí es dondé se busca la clase principal de tu aplicación. Busca como debería ser la estructura y contenido de ese fichero. Hay avisas para que quede constancia :P

NOTA: No te puedo dejar enlaces porque un proxy me tiene las manos atadas... PERO, creo recordar que en la pagina de Oracle viene una documentación sobre el Manifest.
Saludos!

Sigue sin funcionar :( :(

Sigue sin funcionar :( :( :(

Agregue el manifest como el de abajo:

Manifest-Version: 1.0
X-COMMENT: Main-Class will be added automatically by build
Main-Class: Capture.Capture

Y ahora me dice Java RuntimeError al tratar de abrirlo en otra PC... en la mia sigue jalando al 100

Imagen de Jose Manuel

Mmm, intentemos lo siguiente:

Mmm, intentemos lo siguiente: crea un hola mundo en Swing, empaquetado, tal cual tienes tu proyecto (obviamente solo tendra un archivo). Crea el jar ejecutable y pruebalo en la otra maquina. Lo digo por si lo que falla son dependencias dentro de tu jar o algo así.

Ademas, no solamente digas el tipo de excepción que te manda, pega el Stack Trace. De hecho, pega los dos que te han aparecido. Para esto corre tu jar sobre una terminal.

Si no sabes como, sería mas o menos así:
prompt: java -jar MiJar.jar
Y de allí sacamos el log de la ejecución.

El Hola mundo tampoco jaló

El Hola mundo tampoco jaló (marco runtime error).

Estoy intentando con el Prompt a ver que tira....

No se si ayude pero, las

No se si ayude pero, las otras maquinas no tienen el java.exe, javaw.exe ni javaws.exe en el System32 y yo si...

Aún así si tienen instalado JAVA y pueden abrir otras aplicaciones jar menos la mia :(...

Continuo con lo del prompt...

Que dice tu archivo manifest

Que dice tu archivo manifest ? ( escribelo aqui )
Que dice el mensaje de error? ( tambien escribelo)
Cómo estás ejecutando tu programa?

Ten en cuenta que no es posible saber que estás haciendo si no nos lo explicas, decir: "no me funciona" no da mucha idea de lo que esta pasando y la gente empezara simplemente a adivinar.

Intenta con este ejemplo:

// A.java
package a;
class A {
    public static void main( String ... args ) {
        javax.swing.JOptionPane.showMessageDialog(null, "Hola");
    }
}

// m.mf
Main-class: a.A

:: Compilar:
javac -d . A.java

:: Crear el jar
jar -cmf m.mf a.jar a

Al dar doble click en ese archivo ( a.jar ) aparece el mensaje hola.

Hice el programa en NetBEans

Hice el programa en NetBEans entonces el manifest lo generó automaticamente, pero bueno tiene lo siguiente:

Manifest-Version: 1.0
X-COMMENT: Main-Class will be added automatically by build
Main-Class: Capture.Capture //Esta linea la agregué para ver si funcionaba

Y pues el jar tiene todas las clases y archivos de mi aplicación (creo que seria muy largo copiarlos todos).

Los errores solo me sale un message box que dice:
"Could not find the main class: [Programa] Program will exit." en una
y en la otra
"Runtime Error"

Imagen de ezamudio

Capture.Capture

La convención es usar los nombres de los paquetes en minúscula, y las clases en mayúscula. Realmente tienes un paquete llamado Captura (con C mayúscula)? Tal vez eso esté dando problemas porque Capture.Capture se interprete como una clase anidada Capture dentro de una clase Capture sin paquete.

En teoria es el por eso lo

En teoria es el "default package" por eso lo puse así y la clase si se llama "Captura".

Donde puedo ver el nombre completo y correcto del Paquete??

Pero esto me daría problemas en todos lados no???

Por que en mi PC si puedo abrirlo sin problemas??

(siento no poderles dar más datos ahorita pero por el momento no tengo acceso a otra PC que no sea la mia [donde si corre])

Imagen de Jose Manuel

Re: Capture.Capture

@ezamudio De eso tambien tenía mis dudas. Aunque recuerdo haber visto en la documentación de Oracle ejemplos utilizando los nombres de los paquetes en mayúscula. Y como menciona @BlackJohan ¿Porqué en su computadora si corre la aplicación?

@BlackJohan Realiza lo que te menciono @OscarRyz, todo manual, desde la terminal, en tu caso se que estas en un "guindos" así es que abre el cmd, colocate en el directorio donde tengas los archivos ( la clase y el manifest) y escribe los comandos. Una vez que generes el jar de manera manual ejecutalo en tu pc y en la otra, recuerda ejecutarlo desde la misma terminal (cmd) de la manera en que te explique antes. Lo que te salga en el cmd, si es que sale algo lo pegas aqui.

Sale vale.

Ok... Trabajo en eso y lo que

Ok...

Trabajo en eso y lo que salga se los pego aca...

Entiendo a que te refieres, Linux no me ha dado estas broncas :( :( :(

Pero esto debe ser para Shitdows XD

Saludos!!!

Pues no es un problema entre

Pues no es un problema entre Windows / Linux eh eso es seguro, así que sin defender a Windows tampoco lo denosten.

Justo por esto te pedí el error exacto, tu mensaje de error dice que esta buscando la clase: [Programa] (así con corchetes y todo ) y no Capture.Capture ( por cierto, el upper case en el nombre del paquete tampoco es la causa del problema, solo esta fuera de convención pero a la computadora no le importa, igual cambialo a lowercase)

Dices que el hola mundo no te funcionó pero tampoco describes que te sale, o que tiene ese hola mundo, dices que el error es RuntimeException que es otra cosa ( y otro error )

Tu archivo manifest tiene un "placeholder" donde debe de ir el nombre de tu programa, seguramente se ve así:

$cat m.mf
Main-class: [Programa]
$jar -cmf m.mf a.jar a
$java -jar a.jar
Error: Could not find or load main class [Programa]

La razón por la cual en tu computadora si corre es porque estás ejecutando otro jar, o estás ejecutando el programa que tienes abierto en el IDE, o ( incluya alguna suposición aquí ) quien sabe porque tampoco nos dices como lo estas ejecutando. Doble click en el archivo jar?, desde la linea de comandos? open jar? desde el IDE?

El archivo .jar tiene el mismo formato que los archivos .zip, si lo renombras y lo abres podras ver el contenido real de tu archivo manifest.mf y ahi verás que le estás diciendo que el programa de llame: [Programa]

Sorry... no he pegado los

Sorry... no he pegado los errores exactos por que aun no consigo otra PC para ejecutar.

En cuanto a lo de Como ejecuto el programa...

En el NEtBeans uso Build/Clean tambien he usado solo Build, una vez que me genera el JAR doy doble click en el archivo ya fuera de NetBeans.
Incluso he quitado el dispositivo de almacenamiento donde guardo el proyecto y Abro el JAR y sin problemas pero nuevamente en otras PCs NADA.

Perdon por no contestar luego

Perdon por no contestar luego pero, andaba apurado...

El problema esta solucionado casi al 100%.

Lo unico que hice fue cambiar el JDK de 1.8 a 1.7 y ya esta jalando en casi todas las máquinas, menos en una...
Esta máquina es ,la que orginialmente me regresaba un MesaggeBox que decia "Could not find the main class: Capture.Capture Program will exit."

Esto ya solo pasa en una PC y esta tambien corre otras apps en java sin problemas.

Que piensan???

Listo el error en este caso

Listo el error en este caso era de la Instalacion de java en la ya mencionada máquina.

Se reinstalo Java y todo jala bien..

Saludos y gracias a todos.

style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">