MacOS系统的路径一直显示错误,没办法读取到

MacOS系统的路径一直显示错误,没办法读取到

@Test
/*读取磁盘系统中的配置文件*/
public void demo3()
{
   String path = "file:/Users/apple/Desktop/test/applicationContext.xml";
//创建Spring的工厂类
   ApplicationContext applicationContext = new FileSystemXmlApplicationContext(path);
   UserService userService = (UserService) applicationContext.getBean("userService");

   userService.sayHi();
}



设置path是百度找的回答,但是也不行



正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

4回答
Schwarzeni 2019-01-12 14:23:28

首先,在MacOS和Linux下绝对路径应该这么写 "/Uses/.../..../..",但是这样是报错的,查看FileSystemXmlApplicationContext的解析路径的方法getResourceByPath
源码发现它默认读取的是相对路径,所有只要路径不为空,它就会把第一个 '/' 去掉,如果你真的要写绝对路径,那么应该在路径前再加一个斜杠,这么写 "//Users/../../",这样子它处理的时候只把第一个斜杠去掉了,剩下来的就是绝对路径

http://img1.sycdn.imooc.com//climg/5c3986380001e2c521820858.jpg


或者写相对路径也可以,也是源码推荐的方式,你可以写相对于存放源码的文件夹的路径,如果你的工程目录如下

http://img1.sycdn.imooc.com//climg/5c39875200018e2305600808.jpg

路径就这么写 src/main/resources/applicationContext.xml

  • 抱歉相对路径那里讲错了,是相对于java虚拟机执行字节码时所在的路径,使用IDE的话执行时是在项目的根目录,所以应该是相对于项目的根目录,为 src/main/resources/applicationContext.xml;但是由于生成了编译好的target目录,里面也有applicationContext.xml,所有你填写target/classes/applicationContext.xml 也可以运行起来
    2019-01-12 23:33:33
慕桂英5446361 2018-11-09 11:30:08
/**
 * 读取磁盘系统中的配置文件
 */
@Test
public void demo3() {
    // 创建Spring的工厂类
    ApplicationContext applicationContext = new FileSystemXmlApplicationContext("file:/Users/wanghaisheng/IdeaProjects/spring_ioc/applicationContext.xml");

    // 通过工厂获得类
    UserService userService = (UserService) applicationContext.getBean("userService");

    userService.sayHello();
}
/**
 * 传统方式的工厂类:BeanFactory
 */
@Test
public void demo5() {
    // 创建工厂类
    BeanFactory beanFactory = new XmlBeanFactory(new FileSystemResource("/Users/wanghaisheng/IdeaProjects/spring_ioc/applicationContext.xml"));

    // 通过工厂获得类
    UserService userService = (UserService) beanFactory.getBean("userService");

    userService.sayHello();

}


好帮手慕阿莹 2018-11-06 10:18:47

建议同学参考一下这个问答下

http://class.imooc.com/course/qadetail/66450 

老师从macos上获取路径的方法,尝试以这种方式复制粘贴一下试试。

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

慕布斯645313 2018-11-02 10:06:49

你试试使用相对路径来获取 ApplicationContext applicationContext = new FileSystemXmlApplicationContext("/applicationContext.xml");

  • 提问者 whyo #1
    不行,还是显示 no such a file or directory
    2018-11-02 14:02:33
  • 慕布斯645313 回复 提问者 whyo #2
    那这种呢?ApplicationContext applicationContext = new FileSystemXmlApplicationContext("applicationContext.xml");我之前多打了一个/,不好意思哈
    2018-11-02 17:26:01
  • 提问者 whyo 回复 慕布斯645313 #3
    还是不行。。一样的no such file or directory
    2018-11-05 22:58:34
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星

相似问题

登录后可查看更多问答,登录/注册

SSM主流框架入门与综合项目实战2018版
  • 参与学习           人
  • 提交作业       205    份
  • 解答问题       4317    个

Java中非常实用的SSM整合开发内容,从Spring开始,到MyBaits的进阶内容,再到SpringMVC的应用,最后是SSM整合开发案例,逐步深入,助你成长为一名Java工程师!

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师