NoClassDefFoundError ao tentar executar meu jar com java.exe -jar ... o que há de errado?

Eu tenho um aplicativo que estou tentando envolver em um frasco para facilitar a implantação. O aplicativo compila e executa bem (em uma janela de cmd do Windows) quando executado como um conjunto de classes alcançáveis no CLASSPATH. Mas quando eu agrupo minhas classes e tento executá-lo com java 1.6 na mesma janela do cmd, começo a receber exceções:

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

O engraçado é que o LogFactory ofensivo parece estar no commons-logging-1.1.jar, que está no caminho da classe especificado. O arquivo jar (sim, está realmente lá):

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

O conteúdo do arquivo 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 ...)

Sim, commons-logging tem a classe LogFactory. E, finalmente, o conteúdo do manifesto do meu frasco:

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

Isso me deixou perplexo, e todos os colegas de trabalho que eu insisto há mais de um dia agora. Apenas para selecionar as respostas, pelo menos por enquanto, as soluções de terceiros para isso provavelmente estão ausentes devido a restrições de licenciamento e políticas da empresa (por exemplo: ferramentas para criar exe ou empacotar jarros). O objetivo final é criar um jar que possa ser copiado da minha caixa de desenvolvimento do Windows para um servidor Linux (com quaisquer jars dependentes) e usado para preencher um banco de dados (para que os caminhos de classe possam acabar sendo diferentes entre os ambientes de desenvolvimento e implantação). Qualquer pista para esse mistério seria muito apreciada!

questionAnswers(6)

yourAnswerToTheQuestion