NoClassDefFoundError al intentar ejecutar mi jar con java.exe -jar ... ¿qué pasa?

Tengo una aplicación que estoy tratando de envolver en un jar para una implementación más fácil. La aplicación se compila y funciona bien (en una ventana de cmd de Windows) cuando se ejecuta como un conjunto de clases a las que se puede acceder desde CLASSPATH. Pero cuando levanto mis clases e intento ejecutarlo con java 1.6 en la misma ventana cmd, empiezo a obtener excepciones:

C:\dev\myapp\src\common\datagen>C:/apps/jdk1.6.0_07/bin/java.exe -classpath C:\myapp\libs\commons -logging-1.1.jar -server -jar DataGen.jar
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
    at com.example.myapp.fomc.common.datagen.DataGenerationTest.<clinit>(Unknown Source)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory
    at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:276)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
    ... 1 more

Lo curioso es que el LogFactory ofensivo parece estar en commons-logging-1.1.jar, que se encuentra en la ruta de clase especificada. El archivo jar (sí, está realmente allí):

C:\dev\myapp\src\common\datagen>dir C:\myapp\libs\commons-logging-1.1.jar
 Volume in drive C is Local Disk
 Volume Serial Number is ECCD-A6A7

 Directory of C:\myapp\libs

12/11/2007  11:46 AM            52,915 commons-logging-1.1.jar
           1 File(s)         52,915 bytes
           0 Dir(s)  10,956,947,456 bytes free

El contenido del archivo commons-logging-1.1.jar:

C:\dev\myapp\src\common\datagen>jar -tf C:\myapp\libs\commons-logging-1.1.jar
META-INF/
META-INF/MANIFEST.MF
org/
org/apache/
org/apache/commons/
org/apache/commons/logging/
org/apache/commons/logging/impl/
META-INF/LICENSE.txt
META-INF/NOTICE.txt
org/apache/commons/logging/Log.class
org/apache/commons/logging/LogConfigurationException.class
org/apache/commons/logging/LogFactory$1.class
org/apache/commons/logging/LogFactory$2.class
org/apache/commons/logging/LogFactory$3.class
org/apache/commons/logging/LogFactory$4.class
org/apache/commons/logging/LogFactory$5.class
org/apache/commons/logging/LogFactory.class
... (more classes in commons-logging-1.1 ...)

Sí, commons-logging tiene la clase LogFactory. Y finalmente, el contenido del manifiesto de mi jarra:

Manifest-Version: 1.0
Ant-Version: Apache Ant 1.6.5
Created-By: 10.0-b23 (Sun Microsystems Inc.)
Main-Class: com.example.myapp.fomc.common.datagen.DataGenerationTest
Class-Path: commons-logging-1.1.jar commons-lang.jar antlr.jar toplink
 .jar GroboTestingJUnit-1.2.1-core.jar junit.jar

Esto me ha dejado perplejo, y a cualquier compañero de trabajo que haya molestado durante más de un día. Solo para seleccionar las respuestas, al menos por ahora, las soluciones de terceros para esto probablemente estén fuera debido a restricciones de licencia y políticas de la compañía (por ejemplo: herramientas para crear archivos exe o empaquetar frascos). El objetivo final es crear un archivo jar que se pueda copiar de mi caja de Windows de desarrollo a un servidor Linux (con cualquier tarro dependiente) y usarlo para llenar una base de datos (por lo que las rutas de clase pueden terminar siendo diferentes entre los entornos de desarrollo e implementación). ¡Cualquier pista sobre este misterio sería muy apreciada!

Respuestas a la pregunta(6)

Su respuesta a la pregunta