无法使用App引擎的Java Mail示例代码解析符号

时间:2015-03-14 19:12:01

标签: java android google-app-engine javamail

我已按照hello世界指南here成功使用Android Studio在Android项目中设置了应用引擎后端。该应用程序可以与后端服务器通信。我的下一步是编写后端代码,以便它可以发送电子邮件。我正在关注官方指南here。但是,我遇到了以下import语句的问题,无法解决。

import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

我真的很困惑为什么会出现这种情况,因为指南明确指出“您需要的所有JavaMail类都包含在App Engine SDK中。不要将Oracle®的JavaMail JAR添加到您的应用程序中;如果您这样做,该应用程序将抛出异​​常。“

项目中包含App Engine SDK,否则hello world程序将无效。我无法弄清楚为什么导入语句没有解决。

这是我的build.gradle文件供参考。非常感谢您的帮助。

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.google.appengine:gradle-appengine-plugin:1.9.14'
    }
}
repositories {
    jcenter();
}
apply plugin: 'java'
apply plugin: 'war'
apply plugin: 'appengine'
sourceCompatibility = JavaVersion.VERSION_1_7
targetCompatibility = JavaVersion.VERSION_1_7
dependencies {
    appengineSdk 'com.google.appengine:appengine-java-sdk:1.9.14'
    compile 'javax.servlet:servlet-api:2.5'
}
appengine {
    downloadSdk = true
    appcfg {
        oauth2 = true
    }
}

1 个答案:

答案 0 :(得分:3)

好的,我在几小时后通过在build.gradle文件中添加一个额外行来设法解决问题。

dependencies {
    appengineSdk 'com.google.appengine:appengine-java-sdk:1.9.18'
    compile 'com.google.appengine:appengine-api-1.0-sdk:1.9.18'
    compile 'javax.servlet:servlet-api:2.5'   
}

事实证明只是拥有

appengineSdk 'com.google.appengine:appengine-java-sdk:1.9.18'

还不够。我有这样的印象,因为我可以运行hello world程序就好了(即使用GAE的工具部署到后端,这意味着已经注册了sdk依赖项)。但是,当我尝试在Java代码中从sdk本身调用特定库时,它们无法解析。

修复是添加编译依赖项。

compile 'com.google.appengine:appengine-api-1.0-sdk:1.9.18'

虽然我无法从官方文档中找到相关信息。事实上,如果不是this articlemaven repo,我就不知道如何正确地表达编译依赖关系。

希望这有助于任何人在代码中使用GAE库。