在使⽤ XML 的配置⽅式来构建 Mybatis 的核⼼类 SqlSessionFactory 时,遇到了配置⽂件路径总是写不对的问题。事后看其实就是没有好好看⽂档,⼀直在盲⼈摸象。
下⾯时读取 XML 配置⽂件的代码:
var inputSteam = ResourceAsStream("l");
var sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputSteam);
⼀开始我是将配置⽂件放在 src/main/java/com/imxfly/l 中,然后读取路径写成:
com/imxfly/l ,但是提⽰ java.io.IOException: Could not find resource com/imxfly/l。
所以关键是这⾥的配置⽂件路径如何填写,我们知道读取的路径并不是按照当前开发时候的⽬录结构来的,⽽是编译后在项⽬target ⽬录下以 classes ⽬录为 classpath(即类的根⽬录)去读取的。
于正谈娱乐圈套路假设我们把配置⽂件放在 src/main/java/com/imxfly/config ⽬录下,那么使⽤ maven compile 编译后去
查看 target ⽬录你会发现不到这个配置⽂件,这是因为 Maven 编译的时候默认只读取 src/main/java ⽬录下的 .java ⽂件然后编译成 .class ⽂件,所以你在 target ⽬录下是不到我们的配置⽂件的,怎么解决呢?
推荐的做法是把这些 XML 配置⽂件放在 src/main/resources ⽬录下。
在官⽅⽂档()中清楚的描述了这⼀⾏为,其中有⼀句话:
Within artifact producing source directories (ie. main and test), there is one directory for the language java (under
which the normal package hierarchy exists), and one for resources (the structure which is copied to the target
classpath given the default resource definition).
对于 resources ⽬录,其⽬录结构会完整的直接拷贝到 target classpath 中,假如我们有如下 src 的⽬录结构:
.
├── main
│├── java
││└── com
││└── imxfly
││└── App.java
│└── resources
│└── config
│└── l
└── test
└── java
└── com
└── imxfly
读取配置文件失败└── AppTest.java
那么编译完后的 target ⽬录结构就是:
.
刘德华的资料├── classes
├── com
│└── imxfly
│└── App.class
└── config
└── l
所以我们在代码中读取配置⽂件的路径就是:
情人节红包发多少
var inputSteam = ResourceAsStream("l");
因为默认情况下,Maven 会在 src/main/resources 去寻项⽬的资源⽂件。
但是如果我们的项⽬结构不好修改,配置⽂件就在 src/main/java/com/imxfly/l 怎么办?
此时我们就需要在 Maven 配置⽂件 l 中去告诉 Maven 我们的资源⽂件放在了哪⾥:
<project>
...
<build>
...
<resources>
<resource>
<directory>src/main/java/com/imxfly/config</directory>
</resource>
<resource>
<directory>src/main/java/com/imxfly/config2</directory>
</resource>
<resource>
<directory>src/main/java/com/imxfly/config3</directory>
</resource>
</resources>
...
</build>
...
</project>电脑系统安装步骤
编译时 Maven 就会把这些⽬录下的⽂件结构完整的拷贝到 target ⽬录下(就像上⾯完整拷贝 resources ⽬录⼀样),所以此时我们的读取路径为:
空间说说怎么全部删除var inputSteam = ResourceAsStream("l");
参考资料:
到此这篇关于Maven 的配置⽂件路径读取⽅法的⽂章就介绍到这了,更多相关Maven 配置⽂件路径读取内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!
发布评论