我正在与Maven开发一个项目。在发送电子邮件的类中,在运行和开发模式下,我收到以下错误:引起:java.io.FileNotFoundException:jQuery / images / logo.png(Ficheiro ou directoria inexistente)==> translation =未找到文件或目录。
我尝试过很多路径,比如“./jQuery/images/logo.png”,“/ jQuery / images / logo.png”和其他路径。完整的相对路径是:“src / main / webapp / jQuery / images / logo.png”。
在“target”文件夹中,路径为“project-1.0-SNAPSHOT / jQuery / images / logo.png”。 在war文件中,是“jQuery / images / logo.png”。
我认为这不重要,但我使用NetBeans 7.1.1作为IDE。
我发现在运行时返回的绝对路径是“/home/user/apache-tomcat-7.0.22/bin/jQuery/images/logo.png”!...这不是项目路径!
如何在Maven项目中的Java类文件夹和后代中获取文件?
代码是:
MimeBodyPart attachmentPart = null;
FileDataSource fileDataSource = null;
for (File a : attachments) {
System.out.println(a.getAbsolutePath());
attachmentPart = new MimeBodyPart();
fileDataSource = new FileDataSource(a) {
@Override
public String getContentType() {
return "application/octet-stream";
}
};
attachmentPart.setDataHandler(new DataHandler(fileDataSource));
attachmentPart.setFileName(fileDataSource.getName());
multipart.addBodyPart(attachmentPart);
}
msg.setContent(multipart);
msg.saveChanges();
Transport transport = session.getTransport("smtp");
transport.connect(host, from, "password");
transport.sendMessage(msg, msg.getAllRecipients());
答案 0 :(得分:0)
路径.../apache-tomcat-7.0.22/bin/jQuery/...
真的很奇怪。 bin
包含Tomcat的脚本,它不应包含任何代码或任何与您的应用程序相关的资源。即使您在上下文/bin
中部署了应用,资源最终也会在`.../apache-tomcat-7.0.22/webapps/bin/...
下
这看起来像是早期部署中的错误。
现在回到你的问题。要获取Web应用程序的资源路径,请使用以下代码:
String absolutePath = getServletContext().getRealPath("/jQuery/images/logo.png");
(docs)