为什么我在MANIFEST指定了Class-Path但还是报找不到类啊?
MANIFEST文件如下:Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Created-By: Apache Maven
Built-By: Administrator
Build-Jdk: 1.5.0_15
Main-Class: wbs.service.metatixmq.ReceiveMessage
Class-Path: ./lib/spring-context.jar ./lib/spring-aop.jar
 ./lib/spring-agent.jar ./lib/spring-aspects.jar
 ./lib/spring-beans.jar ./lib/spring-core.jar
 ./lib/spring-jdbc.jar ./lib/spring-jms.jar ./lib/spring-orm.jar
 ./lib/spring-test.jar ./lib/spring-tomcat-weaver.jar
 ./lib/spring-tx.jar ./lib/xapool.jar ./lib/xerces-2.6.2.jar
 ./lib/xml-apis.jar ./lib/postgresql-8.3-603.jdbc3.jar
 ./lib/persistence.jar ./lib/log4j-1.2.15.jar
 ./lib/junit-4.4.jar ./lib/jta.jar ./lib/jotm.jar
 ./lib/jdbc2_0-stdext.jar ./lib/jaxen-1.1-beta-7.jar
 ./lib/javassist.jar ./lib/jaas.jar ./lib/hibernate3.jar
 ./lib/geronimo-jms_1.1_spec-1.1.1.jar
 ./lib/geronimo-j2ee-management_1.0_spec-1.0.jar ./lib/ehcache-1.2.3.jar  
 ./lib/easymockclassextension.jar ./lib/easymock.jar
 ./lib/dom4j-1.6.1.jar ./lib/commons-pool-1.3.jar
 ./lib/commons-logging.jar ./lib/commons-logging-1.1.jar
 ./lib/commons-lang.jar ./lib/commons-dbcp.jar
 ./lib/commons-collections-2.1.1.jar ./lib/commons-attributes-compiler.jar
 ./lib/commons-attributes-api.jar ./lib/cglib-nodep-2.1_3.jar
 ./lib/c3p0-0.9.1.2.jar ./lib/aspectjweaver.jar
 ./lib/aspectjrt.jar ./lib/asm-util-2.2.3.jar
 ./lib/asm-commons-2.2.3.jar ./lib/asm-2.2.3.jar
 ./lib/aopalliance.jar ./lib/antlr-2.7.6.jar
 ./lib/activemq-core-5.1.0.jar ./lib/activation-1.1.jar我在命令行下用java -jar XXX.jar去执行报Exception in thread "main" java.lang.NoClassDefFoundError: org/springframework/c
ontext/support/ClassPathXmlApplicationContext
我这个jar包的目录结构就是根路径下面有lib、META-INF目录,lib里面都是装入的上面Class-Path里面的包,META-INF里面装的是MANIFEST这个文件啊?请问怎样解决啊?

解决方案 »

  1.   

    你jar包所在的目录下必须有一个lib文件夹,这个文件夹里放那些jar文件比如:c:\aaa\xxx.jar
    那必须有 c:\aaa\lib\ 这个文件夹,然后里面放引用到的jar文件
      

  2.   

    我不是说了根路径下面有lib目录?而且里面装的都是jar
      

  3.   

    "我这个jar包的目录结构就是根路径下面有lib、META-INF目录,lib里面都是装入的上面Class-Path里面的包"你是不是把lib文件夹打到xxx.jar里面去了?
    不然怎么会有META-INF目录
      

  4.   

    “你是不是把lib文件夹打到xxx.jar里面去了? 
    不然怎么会有META-INF目录”
    恩,对啊
      

  5.   

    ./lib/spring-context.jar换成../lib/spring-context.jar
    是两个点。
      

  6.   

    不过建议最好把你lib下的jar直接放入classpath中,这样就不用写这么多了,
      

  7.   

    不对吧??我觉得这种情况应该用相对路径,也就是“lib/spring-context.jar”,前面即没有一点,更不是两点.表示当前目录,比如你执行jar的路径是“c:\test”,那么“./lib/spring-context.jar”将会解析为“c:\test\lib\spring-context.jar”另外,第三方包最好不要一块打包,也就是说目录结构如下:
    project(目录)
        -project.jar
        -lib(目录)
          -spring-context.jar
          -spring-beans.jar
          -...同时,MANIFEST中使用相对路径