Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Maven java.io.FileNotFoundException_Maven_Filenotfoundexception - Fatal编程技术网

Maven java.io.FileNotFoundException

Maven java.io.FileNotFoundException,maven,filenotfoundexception,Maven,Filenotfoundexception,我正在和Maven一起开发一个项目。在一个发送电子邮件的类中,在运行和开发模式下,我得到以下错误:由以下原因引起:java.io.FileNotFoundException:jQuery/images/logo.png Ficheiro ou directoria inexistent=>translation=未找到文件或目录 我尝试了很多路径,比如./jQuery/images/logo.png、/jQuery/images/logo.png等。完整的相对路径是:src/main/webap

我正在和Maven一起开发一个项目。在一个发送电子邮件的类中,在运行和开发模式下,我得到以下错误:由以下原因引起:java.io.FileNotFoundException:jQuery/images/logo.png Ficheiro ou directoria inexistent=>translation=未找到文件或目录

我尝试了很多路径,比如./jQuery/images/logo.png、/jQuery/images/logo.png等。完整的相对路径是:src/main/webapp/jQuery/images/logo.png

在目标文件夹中,路径是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项目中获取webapp文件夹中的文件以及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());
路径…/apache-tomcat-7.0.22/bin/jQuery/。。。这真的很奇怪。bin包含Tomcat的脚本,它不应该包含任何代码,也不应该包含任何与应用程序相关的资源。即使您在context/bin中部署应用程序,这些资源最终也会位于“…/apache-tomcat-7.0.22/webapps/bin/…”下

这看起来像是早期部署中的错误

现在回到你的问题上来。要获取web应用程序的资源路径,请使用以下代码:

String absolutePath = getServletContext().getRealPath("/jQuery/images/logo.png");

显示您用于打开文件的代码。感谢您的快速响应!我没有使用servlet。是一个普通的Java类,如果我可以这样称呼它。。。该类中的公共类EmailsManager{…},其System.getPropertyjava.class.path为:/home/user/apache-tomcat-7.0.22/bin/bootstrap.jar:/home/rcc/apache-tomcat-7.0.22/bin/tomcat-juli.jar。这意味着什么?我们做到了!谢谢你,亚伦。我在调用Java类的JSP中使用了您的建议。JSP中使用的新代码是:String attachment=String request.getParameterattachment;//单个演示文件字符串attachmentralpath=request.getSession.getServletContext.getRealPathattachment+/;ArrayList attachments=新的ArrayList;attachments.addnew文件AttachmentCentralPath;EmailsManager电子邮件=新的EmailsManager邮件、端口、发件人、收件人、主题、正文、附件;抱歉,代码行应该分开,但我没有找到这样做的方法。