with attribute java class jar main

java - attribute - No se pudo encontrar o cargar la clase principal con un archivo Jar



no main manifest attribute in jar (8)

Estoy intentando cargar un jar usando

@echo off java -jar Test.jar pause

Con el manifiesto de

Manifest-Version: 1.0 Main-Class: classes.TestClass

En el directorio Jar, puedo ver claramente un archivo classes / TestClass cuando lo extraigo.

Edit: classes.TestClass tiene un public static void main(String[] args) .

Deceleración del paquete en classes.TestClass es package classes;

Pero sigo recibiendo el mensaje de error

Could not find or load main class classes.TestClass

He pasado por todo lo que he podido encontrar con este problema, y ​​nada parece ayudar.

Intenté editar el classpath, rehacer el manifiesto, instalar el nuevo JRE.

¿Qué más debería estar haciendo?


1. Cree un archivo de texto calles Manifest.txt y proporcione el valor como

Clase principal: classes.TestClass

2. Cree el jar como

jar cfm test.jar Manifest.txt classes / *. class

3. Ejecuta el jar como

java -jar test.jar


Esto es muy difícil de depurar sin información completa.

Las dos cosas que parecen más probables en este punto son que el archivo en el contenedor no está almacenado en un directorio DENTRO DEL JAR, o que no es el archivo correcto.

Debe almacenar TestClass.class: algunas personas nuevas en esta tienda almacenan el archivo fuente, TestClass.java.

Y debe crear el archivo jar para que TestClass.class aparezca con una ruta de clases. Asegúrate de que no sea "/ classes". Use zip para mirar el archivo y asegúrese de que tenga una ruta de "clases".


Lo tengo trabajando así:

TestClass.Java

package classes; public class TestClass { public static void main(String[] args) { System.out.println("Test"); } }

Use javac en la línea de comando para producir TestClass.class . Coloque TestClass.class en una carpeta classes/ .

MANIFEST.MF

Manifest-Version: 1.0 Main-Class: classes.TestClass

Entonces corre

jar cfM MANIFEST.MF test.jar classes/

Luego ejecútalo como

java -jar test.jar


Acabo de tener el mismo problema al final porque copié y pegué el código de la palabra y era un tipo de personaje ''-'' ligeramente diferente, eso es todo lo que puedo pensar, cuando lo escribí manualmente funcionó


java -cp "full-path-of-your-jar" Principal

ejecutar cualquier otra clase que tenga "public void main" en algún paquete,

java -cp "full-path-of-your-jar" package1.package2.packages-hierarchy.ClassHavingMain


Al menos, la forma en que hice esto es la siguiente:

Si tiene un árbol src anidado (digamos com.test.myclass.MyClass) y está compilando desde un directorio raíz, debe hacer lo siguiente:

1) cuando creas el archivo jar (por lo general, ponlo en un script): jar -cvfm my.jar com / test / myclass / manifest.txt com / test / myclass / MyClass.class

2) El manifiesto debería verse así:

Mainfest-versión: 1.0 Main-Class: com.test.myclass.MyClass Class-Path:. my.jar

3) Ahora puedes ejecutar el jar desde cualquier lugar como este:

java -jar my.jar

Espero que esto ayude a alguien



Tuve un problema similar que pude resolver otorgando el privilegio de ejecución para todas las carpetas principales en las que se encuentra el archivo jar (en un sistema Linux).

Ejemplo:

/folder1/folder2/folder3/executable.jar

las 3 carpetas (carpeta1, carpeta2 y carpeta3) así como también el ejecutable.jar necesitan privilegio de ejecución para el usuario actual; de lo contrario, se devuelve el error "No se pudo encontrar o cargar la clase principal ...".