Maven java.io.FileNotFoundException

时间:2012-05-08 11:38:05

标签: maven filenotfoundexception

我正在与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());

1 个答案:

答案 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