我正在为朋友发帖。他无法从工作中访问Stackoverflow(第三方Cookie似乎被禁用):)
好的,请点击:
他们有一个Web应用程序(JSP / Servlets / Custom Framework),他正在尝试动态生成PDF。现在他想要将图像添加到该PDF。但它没有用。这是一段代码:
Image image = Image.getInstance("../graphics/caution_sign.gif");
图形文件夹位于父项目(webcontent / graphics /)上,这就是他们如何在所有其他位置(在JSP中)访问该文件夹中的图像。
现在我在另一篇文章中读到我们需要使用真正的绝对路径来访问图像。但是这里的问题是这是一个POJO,并且在这个类中无法访问servletContext。
PDF生成正常,但图像未显示,错误为:
C:\Program Files\IBM\SDP\runtimes\base_v7\profiles\was70profile1\..\graphics\caution_sign.gif (The system cannot find the path specified.)
它试图在不同的位置查找“Graphics”文件夹,而不是在webcontent文件夹中查找。
希望我的问题很清楚,如果有人可以帮助解决这个问题并帮助解决这个问题,我会非常感激
非常感谢
哈里什
答案 0 :(得分:1)
他能够使用这段代码解决它。希望这有助于其他人。
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
String path = classLoader.getResource("/graphics/caution_sign.gif").getPath();
Image image = Image.getInstance(path);
由于
哈里什
答案 1 :(得分:1)
以下代码可用于访问java类中的图像路径。
URL imageUrl = getClass().getProtectionDomain().getCodeSource().getLocation();
Image img=Image.getInstance(imageurl+"../../../some/images/pic.gif");
答案 2 :(得分:-1)
与之前的解决方案相比发生了很小变化:
Step1:下面的代码将返回包含类文件名
的类路径URL classURL = getClass().getProtectionDomain().getCodeSource().getLocation();
步骤2:通过删除类名
获取基本路径String basePath = classURL.getPath().replaceAll("<classname>.class","");
步骤3:根据您的项目导航到图像位置
Image headerLogo = Image.getInstance(basePath+"../../../../../../../images/header_logo.gif");