2012-05-08 17 views
0

私はMavenでプロジェクトを開発しています。実行モードと開発モードで電子メールを送信するクラスでは、次のエラーが発生します。原因:java.io.FileNotFoundException:jQuery/images/logo.png(Ficheiro ou directoria inexistente)==>翻訳=ファイルまたはディレクトリが見つかりません。Maven java.io.FileNotFoundException

"./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クラスからwebappフォルダと子孫ファイルを取得するにはどうすればよいですか?

コードは次のとおりです。

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

ありがとうございました! – ricardoc

答えて

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

+0

私はサーブレットを使用していません。 public class EmailsManager {...} – ricardoc

+0

このクラスでは、System.getProperty( "java.class.path")を使用して、次のように取得します。/ home/user/apache-tomcat-7.0.22/bin/bootstrap.jar:/home/rcc/apache-tomcat-7.0.22/bin/tomcat-juli.jar。これはどういう意味ですか? – ricardoc

+0

さて、私たちはそれをやった!アロンに感謝します。私はあなたの提案をJavaクラスを呼び出すJSPで使用しました。 JSPで使用される新しいコードは次のとおりです。 String attachment =(String)request.getParameter( "attachment"); //単一のデモファイル String attachmentRealPath = request.getSession()。getServletContext()。getRealPath(attachment + "/"); ArrayList 添付ファイル=新しいArrayList(); attachments.add(新しいファイル(attachmentRealPath)); EmailsManager電子メール=新しいEmailsManager(ホスト、ポート、送信元、宛先、件名、本文、添付ファイル); – ricardoc

関連する問題