解决方案 »

  1.   

    jar包中的类通过如下方法获得配置文件路径或加载配置文件 ,原理是在运行时通过类的classLoader获得资源
    URL fileURL=this.getClass().getResource("/config/application.xml");//jar中的类获得jar包中资源文件的路径   
    InputStream is=this.getClass().getResourceAsStream("/config/application.xml");//jar中的类读入jar包中的资源文件 
      

  2.   

    老大,我加载spring呢,能这么加载吗
      

  3.   

    加载spring如果不是默认目录,肯定要指定文件路径,总不可能spring在整个jar里面遍历xml文件吧
      

  4.   

    我指定的就是根目录,怎么可能遍历,......
    麻烦你知道spring ClassPathXmlApplicationContext 怎么加载的再来说好吧
    也麻烦你仔细看我说的我是怎么加载的.
      

  5.   

    没看仔细,被1L带沟里了
    Unable to locate Spring NamespaceHandler for XML schema namespace [http://www.springframework.org/schema/context]
    xml文件内容有问题,开头几行贴一下吧可能http://www.springframework.org/schema/context相关的内容删掉就可以了
      

  6.   

    确定没问题 ,可以run的,导成jar以后不行了就是
      

  7.   

    好久没打jar包,都忘了有这茬儿,
    用常用的方法获取配置文件要放在jar外。
    在jar里面,一种是用解析jar文件的方式,一种是2L说的那种。
      

  8.   

    ClassPathXmlApplicationContext这个类只能读放在web-info/classes目录下的配置文件,你卡看你这个目录下有没有这个东西再说。
      

  9.   

    不是web项目,怎么会有web-info
    再说要是是web项目,干嘛打成jar包,直接就war包了
      

  10.   

    自己好好去学习ClassPathXmlApplicationContext这个类的加载路径。
      

  11.   

    你好,我也发现了这个问题,去网上查了一下,试了,如果你是工程直接调用该jar包(classPath相同)的话,用下面的:
    ApplicationContext context = new ClassPathXmlApplicationContext("classpath*:config/appContext.xml");
    即加载处于classpath下的文件,但是这个加载不直观,因为即使找不到文件,spring也不会报错,只是返回的applicationContext没有内容,这种可以直接读取到
      

  12.   

    这种 classpath 还有 classpath* 我也试过了 也取不到
    不过我的没有conf这一层目录 我的在根目录下
    我也看网上说了,但是我的目录结构看我发的图,maven的结构就这样我没有conf这一层目录的
      

  13.   

    写过几个项目就以为自己什么都懂了,懂了还到这里问你妹呀,别人好心给你解答,你还XX,xx你妹啊。
      

  14.   

    觉得很奇怪,如果将该jar包放到其他工程下并进行加载的时候,我说的那个方法是可以运行的(亲自尝试),你可以新建一个工程,把jar包打好放上去,用代码调用能够正确执行,但是如果是可执行/或者调用执行时会出现找不到文件的情况,现在没有办法我都改成properties的形式了,如果有时间再研究,可能是代码问题。但是我觉得spring作为这样一个成熟的框架,应该开发一个可以供Resource或者inputStream类型输入的ApplicationContext,这样搞前无头,后无绪,有点无奈了
      

  15.   

    SB,不懂不要回答问题,OK?看着你这种人就心烦
      

  16.   

    SB,不懂不要回答问题,OK?看着你这种人就心烦我去你玛丽隔壁
      

  17.   

    new ClassPathXmlApplicationContext(new String[]{xx你妹.xml})是从web-info/classes取,废物东西。
      

  18.   

    你搞清楚什么叫做classpath再说吧
      

  19.   

    你搞清楚什么叫做classpath再说吧我看是你个傻逼废物不明白
      

  20.   

    我也遇到这个问题了 但是我的解决了 我直接用myeclipse打war包 打jar包的时候勾选Add directory entries 就可以了 
      

  21.   

    上次我虽然改成了properties方法,但是后来又出现一个问题,也是quartz调用Jar包时出现的问题,会出现找不到本Jar包内的类而报错,我想,如果是类或者文件加载不上,可能是由于调用和本jar包内的ClassLoader不一致,于是,使用了强行切换ClassLoader的方法
    比如本jar包内有XXX.class
    那么使用
    ClassLoader classLoader2 = XXX.class.getClassLoader();
    //因为可能存在调用工程ClassLoader与当前job运行的ClassLoader不一致而导致类加载失败,所以将运行线程的classLoader设置为当前类ClassLoader路径
    Thread.currentThread().setContextClassLoader(classLoader2); 
    spring和xstream(我用的工程组件)都需要读取ClassLoader,如果线程ClassLoader不与本jar包的加载Loader相同,可能会导致文件找不到,如果你还在为此困惑的话,可以试一试,我由于已经取代了spring读取,所以没有经过后来的尝试,全靠你了!
      

  22.   

    1.参考14楼读配置
    2.参考27楼打包
    ps..如果有hibernate的 hbm.xml参考http://xiaoyaocao.iteye.com/blog/1837133
      

  23.   

    打包的问题,fat jar打包默认只把jar里面的配置(handler类,好像),只加载第一行,所以有的东西找不到处理类。找到那个东西直接拷贝到你的jar包的相应的地方,看报错信息应该可以找到。