我已按照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
}
}
答案 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 article和maven repo,我就不知道如何正确地表达编译依赖关系。
希望这有助于任何人在代码中使用GAE库。