首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在HDD中寻找图像,而不是在上下文中

在HDD中寻找图像,而不是在上下文中
EN

Stack Overflow用户
提问于 2011-10-21 17:04:32
回答 1查看 1K关注 0票数 0

我有多模块项目

代码语言:javascript
运行
复制
Project
  |--src
      |-JavaFile.java

Web-Project
  |-Web-Content
    |-images
    |   |-logo.PNG
    |-pages
    |-WEB-INF

  1. 普通java模块包含src和所有java文件
  2. 动态web项目模块包含所有与web相关的内容

最终,常规java模块会成为lib文件夹中动态web模块中的jar文件。

问题

编译后的java文件在c:\ibm\sdp\server completepath\logo.png中查找映像文件,而不是在上下文中查找。在java文件中为iText定义了以下文件:

代码语言:javascript
运行
复制
Image logo = Image.getInstance("/images/logo.PNG");

请建议如何将java文件更改为引用图像。我不允许改变我的项目结构。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-10-21 17:07:27

为此,您需要使用ServletContext#getResource()或更好的getResourceAsStream()。它分别返回一个URL,一个web内容中的资源的InputStream

代码语言:javascript
运行
复制
InputStream input = getServletContext().getResourceAsStream("/images/logo.PNG");
// ...

这样你就不会依赖于在哪里(以及如何!)网络应用程序已经部署。依赖于绝对磁盘文件系统路径只会导致移植性头痛。

另请参阅:

Update:根据注释,您似乎在使用iText (您应该澄清问题中的更多内容,我对其进行了编辑)。然后,您可以使用Image#getInstance()方法,它接受一个URL

代码语言:javascript
运行
复制
URL url = getServletContext().getResource("/images/logo.PNG");
Image image = Image.getInstance(url);
// ...

更新2:根据注释,您原来是处于JSFUpdate2上下文中(您应该在问题中也澄清这一点)。您应该使用ExternalContext#getResource()来获取URL

代码语言:javascript
运行
复制
URL url = FacesContext.getCurrentInstance().getExternalContext().getResource("/images/logo.PNG");
Image image = Image.getInstance(url);
// ...
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7852794

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档