Como executo uma classe em um WAR a partir da linha de comando?

Eu tenho uma classe Java que tem um main e eu costumava executar como um aplicativo independente a partir da linha de comando, e.

java -jar myjar.jar params

Eu precisava reempacotar o código para ser executado sob o apache e todo o meu código, incluindo a classe de ponto de entrada do jar antigo, acabou em um arquivo WAR para facilitar o depósito no servidor da web.

No entanto, eu ainda quero ser capaz de executá-lo a partir da linha de comando e o código não foi alterado e está tudo lá, só não consigo descobrir como fazê-lo funcionar.

Aqui está o que eu tentei ...

Eu presumi que a guerra era como um pote, então

java -jar mywar.war params

Isso falhou dizendo que não havia classe principal definida no manifesto.

Eu adicionei manualmente um manifesto à guerra e tentei novamente, com o mesmo efeito.

Notei que na minha guerra eu tinha uma pasta chamada META-INF contendo um manifest.mf, então eu adicionei uma linha para declarar minha classe principal como faria para um manifesto normal ...

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

Isso deu umanoClassDefFoundError mypackage.MyEntryPointClass, que é um tipo de progresso. Isso me levou a acreditar que era apenas uma questão de caminho, então eu tentei

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

Agora recebo o mesmo erro, mas com um rastreamento de pilha ...

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)

Eu pesquisei um pouco mas não consegui encontrar nada que responda à minha pergunta, e eu li algumas outras perguntas aqui que são um pouco diferentes, então eu pensei em postar.

Java 1.5, não que eu acho que deveria fazer alguma diferença.

questionAnswers(9)

yourAnswerToTheQuestion