I’m developing a project with Maven. In a class to send e-mails, in run and dev modes, I get the following error: Caused by: java.io.FileNotFoundException: jQuery/images/logo.png (Ficheiro ou directoria inexistente) ==> translation = File or directory not found.
I’ve tryed lots of paths, like “./jQuery/images/logo.png”, “/jQuery/images/logo.png” and others. The full relative path is: “src/main/webapp/jQuery/images/logo.png”.
In “target” folder, the path is “project-1.0-SNAPSHOT/jQuery/images/logo.png”.
Inside war file, is “jQuery/images/logo.png”.
I don’t think it’s important, but I’m using NetBeans 7.1.1 as IDE.
I found that the absolute path returned in runtime is “/home/user/apache-tomcat-7.0.22/bin/jQuery/images/logo.png”!… It’s not the project path!
How can I get a file in webapp folder and descendents from a Java class, in a Maven project?
The code is:
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());
The path
.../apache-tomcat-7.0.22/bin/jQuery/...is really odd.bincontains scripts for Tomcat, it should not contain any code nor any resources related to your application. Even if you deploy your app in the context/bin, the resources would end up under`.../apache-tomcat-7.0.22/webapps/bin/...This looks like a mistake made in an earlier deployment.
Now back to your question. To get the path of resource of your web app, use this code:
(docs)