0

Mavenでプロジェクトを開発しています。電子メールを送信するクラスで、実行モードと開発モードで、次のエラーが発生します。ディレクトリが見つかりません。

「./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プロジェクトで、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());
4

1 に答える 1

0

パス.../apache-tomcat-7.0.22/bin/jQuery/...は本当に奇妙です。binTomcat 用のスクリプトが含まれていますが、アプリケーションに関連するコードやリソースを含めないでください。context でアプリをデプロイしても/bin、リソースは最終的には以下になります。`.../apache-tomcat-7.0.22/webapps/bin/...

これは、以前の展開で犯した間違いのようです。

あなたの質問に戻りましょう。Web アプリのリソースのパスを取得するには、次のコードを使用します。

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

(ドキュメント)

于 2012-05-08T12:10:10.707 に答える