我有多模块项目
Project
|--src
|-JavaFile.java
Web-Project
|-Web-Content
|-images
| |-logo.PNG
|-pages
|-WEB-INF
最终常规java模块作为lib文件夹中的动态Web模块中的jar文件
java文件在c:\ ibm \ sdp \ server completepath \ logo.png中查找图像文件,而不是在上下文中。文件在java文件中定义如下:iText:
Image logo = Image.getInstance("/images/logo.PNG");
请建议如何更改我的java文件以引用图片。我不允许改变我的项目结构。
答案 0 :(得分:1)
您需要使用ServletContext#getResource()
或更好的getResourceAsStream()
。它会在Web内容中分别返回URL
InputStream
个资源。
InputStream input = getServletContext().getResourceAsStream("/images/logo.PNG");
// ...
这样您就不会依赖于部署webapp的位置(以及如何!)。依赖于绝对磁盘文件系统路径只会导致可移植性问题。
更新:根据评论,您似乎正在使用iText(您应该在问题中澄清一点,我编辑了它)。然后,您可以使用Image#getInstance()
的{{1}}方法:
URL
更新2 :根据评论,您最终会坐在JSF上下文中(您应该在问题中澄清这一点)。您应该使用ExternalContext#getResource()
来获取URL url = getServletContext().getResource("/images/logo.PNG");
Image image = Image.getInstance(url);
// ...
:
URL