为什么我在MANIFEST指定了Class-Path但还是报找不到类啊?

wong_paye 2008-07-23 10:13:37
为什么我在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这个文件啊?请问怎样解决啊?
...全文
1757 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
楼上正解!

楼主也太强了,做什么项目啊,要导入那么多的包……
lisl2003 2008-07-26
  • 打赏
  • 举报
回复
学习一下
  • 打赏
  • 举报
回复
jar
wong_paye 2008-07-26
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 bao110908 的回复:]
楼上正解!

楼主也太强了,做什么项目啊,要导入那么多的包……
[/Quote]
呵呵,是公司接得一个美国网络游戏公司得点卡支付网站
天外流星 2008-07-25
  • 打赏
  • 举报
回复
不过建议最好把你lib下的jar直接放入classpath中,这样就不用写这么多了,
天外流星 2008-07-25
  • 打赏
  • 举报
回复
./lib/spring-context.jar换成../lib/spring-context.jar
是两个点。
wong_paye 2008-07-25
  • 打赏
  • 举报
回复
没有人回答了吗?
妄旺 2008-07-25
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 diy8187 的回复:]
./lib/spring-context.jar换成../lib/spring-context.jar
是两个点。
[/Quote]
不对吧??

我觉得这种情况应该用相对路径,也就是“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中使用相对路径
iider 2008-07-23
  • 打赏
  • 举报
回复
"我这个jar包的目录结构就是根路径下面有lib、META-INF目录,lib里面都是装入的上面Class-Path里面的包"

你是不是把lib文件夹打到xxx.jar里面去了?
不然怎么会有META-INF目录
wong_paye 2008-07-23
  • 打赏
  • 举报
回复
我不是说了根路径下面有lib目录?而且里面装的都是jar
iider 2008-07-23
  • 打赏
  • 举报
回复
你jar包所在的目录下必须有一个lib文件夹,这个文件夹里放那些jar文件

比如:c:\aaa\xxx.jar
那必须有 c:\aaa\lib\ 这个文件夹,然后里面放引用到的jar文件
wong_paye 2008-07-23
  • 打赏
  • 举报
回复
“你是不是把lib文件夹打到xxx.jar里面去了?
不然怎么会有META-INF目录”
恩,对啊

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧