jar包中的类 如何获取 该 jar包中指定文件的文件路径

最近在学习一个代码自动生成代码的工具,然后尝试自己写一个依赖mybatis的代码生成工具,其中遇到了一些困难,希望各位大牛能够帮忙解答一些,这里跪谢了!

我现在需要在PathUtils类中 获取template中的两个模板文件,在打包成jar文件之前,可以通过String path = getClass().getProtectionDomain().getCodeSource().getLocation().getPath();的方式获取到路径,但当打包成jar文件后 这个方法只能获取到C://user/.m2/..../***.jar。而不能获取到内部的路径。百度过几种方法 java.net.URL Url = getClass().getResource("/images/background.png");  无论是从根目录还是用相对路径,这个URL都返回的是null值,所以很郁闷,希望大牛指教,其jar包的文件结构如图所示

慕容3067478
浏览 5895回答 4
4回答

不负相思意

用这个 ClassLoader.getSystemResources("images/background.png")

莫回无

因为你打成jar包以后,在操作系统看来一个jar包是一个单独文件(操作系统观点single file而已)! 所以你如果想访问jar包中的文件(人的观点),需要使用stream, 所以你需要  使用getResourceAsStream(文件名)

交互式爱情

恩恩 好的 已经解决了 谢谢啦 用getResource  和 getResourceAsStream都可以  主要是前面的用getClass 还是用getClassLoader(). 用getClass().getResource("/template/TempEntity.vm”);path 不以’/'开头时默认是从此类所在的包下取资源 当使用 getClassLoader().getResource("template/TempEntity.vm");  ClassLoader默认则是从ClassPath根下获取,path不能以’/'开头,最终是由 我之前 写反了。

qq_花开花谢_0

用getResource  和 getResourceAsStream都可以  主要是前面的用getClass 还是用getClassLoader(). 用getClass().getResource("/template/TempEntity.vm”);path 不以’/'开头时默认是从此类所在的包下取资源 当使用 getClassLoader().getResource("template/TempEntity.vm");  ClassLoader默认则是从ClassPath根下获取,path不能以’/'开头
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java