¿Cómo ejecuto una clase en un WAR desde la línea de comando?

Tengo una clase Java que tiene una main y solía ejecutarme como una aplicación independiente desde la línea de comandos, por ejemplo.

java -jar myjar.jar params

Necesitaba volver a empaquetar el código para ejecutarse bajo apache y todo mi código, incluida la clase de punto de entrada del antiguo contenedor, terminó en un archivo WAR para facilitar su incorporación al servidor web.

Sin embargo, todavía quiero poder ejecutarlo desde la línea de comandos y el código no ha cambiado y está todo ahí dentro, simplemente no puedo averiguar cómo hacerlo funcionar.

Esto es lo que intenté ...

Supuse que la GUERRA era como un frasco, así que

java -jar mywar.war params

Eso falló diciendo que no había ninguna clase principal definida en el manifiesto.

Agregué manualmente un manifiesto a la guerra y lo intenté de nuevo, con el mismo efecto.

Noté que en mi guerra tenía una carpeta llamada META-INF que contenía un manifest.mf, así que agregué una línea a la que declaraba mi clase principal como lo haría a un manifiesto normal ...

Manifest-Version: 1.0
Main-Class: mypackage.MyEntryPointClass

Esto le dio unnoClassDefFoundError mypackage.MyEntryPointClass, que es el progreso de una especie. Eso me llevó a creer que era solo un problema de camino, así que intenté

Manifest-Version: 1.0
Main-Class: WEB-INF.classes.mypackage.MyEntryPointClass

Ahora obtengo el mismo error, pero con un seguimiento de pila ...

Exception in thread "main" java.lang.NoClassDefFoundError: WEB-INF/classes/mypackage/MyEntryPointClass (wrong name: mypackage/MyEntryPointClass)
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(Unknown Source)
        at java.security.SecureClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.access$100(Unknown Source)
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClassInternal(Unknown Source)

He buscado un poco en Google pero no puedo encontrar nada que responda a mi pregunta, y leí un par de otras preguntas que son un poco diferentes, así que pensé en publicar.

Java 1.5, no creo que eso deba hacer ninguna diferencia.

Respuestas a la pregunta(9)

Su respuesta a la pregunta