我已经按照 hello world 指南 here 成功地使用 Android Studio 在我的 Android 项目中设置了一个应用引擎后端。 .该应用程序可以与后端服务器通信。我的下一步是编写后端代码,使其可以发送电子邮件。我正在关注官方指南 here .但是,我遇到了以下导入语句的问题,无法解决。
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
}
}
最佳答案
好吧,我设法在几个小时后通过在 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 库的任何人有所帮助。
关于java - 无法使用 App Engine 的 Java Mail 示例代码解析符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29053072/