[英]Troubleshooting ClassLoader.getResourceAsStream() or Class.getResourceAsStream()
我在战争具有如下目录结构的应用程序上工作:
ear/war/modules/configuration/gsrc/<java packages start here>
但是,我想动态读取位于此处的文件:
/ear/war/modules/configuration/some/other/dir/somefile.csv
我已经尝试了正常ClassLoader.getResourceAsStream()和Class.getResourceAsStream()的许多排列,以尝试获取对该资源的句柄,所有这些句柄都带有null,例如:
ClassLoader.getResourceAsStream("/modules/configuration/some/other/dir/somefile.csv")
ClassLoader.getResourceAsStream("/configuration/some/other/dir/somefile.csv")
ClassLoader.getResourceAsStream("/some/other/dir/somefile.csv")
Class.getResourceAsStream("../some/other/dir/somefile.csv")
Class.getResourceAsStream("../../some/other/dir/somefile.csv")
Class.getResourceAsStream("../../../some/other/dir/somefile.csv")
我的假设是我正在使用一个类加载器,其根范围是代码所在的gsrc目录。 解决此问题的适当方法是什么?
例如,我希望可以打印出类似ClassLoader.rootDirectory()之类的内容,以弄清类加载器的根目录是什么。 然后,我可以打印出该类加载器的根目录及其父目录,依此类推。
运行时在本地是码头,但在所有其他区域都是Websphere。
我的Eclipse项目具有以下结构:
C:\\ workspace \\ ProjectName \\ src \\ com \\ my \\ package \\ resources \\ myfile.properties
因此,要实际加载此文件,我正在这样做:
getClass().getResourceAsStream("/com/my/package/resources/myfile.properties")
我希望这个例子能对您有所帮助。
可以将文件放在WEB-INF中,然后使用
getServletContext().getResourceAsStream("/WEB-INF/somefile.csv");
或将其放置在文件系统上的任何位置,并使用Java File API或Apache commons-io对其进行访问 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.