Eclipse 打jar三种不同方式的区别

最近开发一个高德地图项目,使用的框架是mybatis+spring,打成jar包运行的方式,但是在eclipse中正在运行,却在打成jar包后无法运行,错误信息如下

C:\Users\Administrator\Desktop\collectiongaode>java -Dcollectiongaode.dir=C:\Users\Administrator\Desktop\collectiongaode -jar C:\Users\Administrator\D
esktop\collectiongaode/lib/gaode.jar
2017-04-20 10:10:52.269, [main     ], [INFO ], AbstractApplicationContext.(510), | Refreshing org.springframework.context.support.FileSystemXmlApplica
tionContext@14387bc2: startup date [Thu Apr 20 10:10:52 CST 2017]; root of context hierarchy
2017-04-20 10:10:52.312, [main     ], [INFO ], XmlBeanDefinitionReader.(315), | Loading XML bean definitions from URL [file:C:/Users/Administrator/Des
ktop/collectiongaode/conf/applicationContext.xml]
Exception in thread "main" java.lang.ExceptionInInitializerError
        at com.panso.CollectionGaode.service.impl.ReadFileServiceImpl.<init>(ReadFileServiceImpl.java:27)
        at com.panso.CollectionGaode.main.CollectionMain.main(CollectionMain.java:28)
Caused by: org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration problem: Unable to locate Spring NamespaceHandler f
or XML schema namespace [http://www.springframework.org/schema/tx]
Offending resource: URL [file:C:/Users/Administrator/Desktop/collectiongaode/conf/applicationContext.xml]

        at org.springframework.beans.factory.parsing.FailFastProblemReporter.error(FailFastProblemReporter.java:68)
        at org.springframework.beans.factory.parsing.ReaderContext.error(ReaderContext.java:85)
        at org.springframework.beans.factory.parsing.ReaderContext.error(ReaderContext.java:80)
        at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.error(BeanDefinitionParserDelegate.java:318)
        at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1435)
        at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1428)
        at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.parseBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:185
)
        at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.doRegisterBeanDefinitions(DefaultBeanDefinitionDocumentReader.jav
a:139)
        at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.registerBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:
108)
        at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.registerBeanDefinitions(XmlBeanDefinitionReader.java:493)
        at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:390)
        at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:334)
        at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:302)
        at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:174)
        at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:209)
        at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:180)
        at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:243)
        at org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.java:127)
        at org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.java:93)
        at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:130
)
        at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:537)
        at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:451)
        at org.springframework.context.support.FileSystemXmlApplicationContext.<init>(FileSystemXmlApplicationContext.java:140)
        at org.springframework.context.support.FileSystemXmlApplicationContext.<init>(FileSystemXmlApplicationContext.java:84)
        at com.panso.CollectionGaode.utils.ApplicationContextFactory.<clinit>(ApplicationContextFactory.java:11)
        ... 2 more

最主要的而是这句报错 
Unable to locate Spring NamespaceHandler f
or XML schema namespace [http://www.springframework.org/schema/tx]

找了很多资料,有的说是jar包没有,有的说是META-INF/spring.schemas 文件的问题。

后来在打jar包的时候发现,Runnable jar 有三种方式

Extract required libraires into generated JAR

Package required libraies into generated JAR

Copy required libraries into a sub-folder next to the generated JAR

我一开始使用的是第一种方式,再尝试第二种方式,就不报错了。


整理了下三种方式jar包的文件夹结构

extract 方式 依赖的jar包都变成了class文件



package方式 把依赖的jar包放在根目录下


copy方式,依赖jar包放在单独一个文件夹里面


















  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值