java - 如何一起使用javamail和appengine API?

标签 java google-app-engine jakarta-mail

我找到了这个主题:Exception while using JavaMail with Google AppEngine: How to fix this?

我有同样的问题,我需要一起使用Javamail API和GAE API。我创建了一个在 PC 上运行的应用程序,用于发送电子邮件。我使用 javamail API,它工作正常。然后,我创建一个在 GAE 上运行的应用程序来收集客户的反馈,然后将其保存在数据存储中。因此,我向 PC 应用程序添加了一个用于从数据存储区检索数据的功能。然后我必须使用appengine-api.jar。代码编译没有问题。但它在运行时抛出异常:

com.google.apphosting.api.ApiProxy$CallNotFoundException: The API package 'mail' or call 'Send()' was not found.

我发现appengine-api.jar中有javax.mail.*,这可能与javamail.jar冲突。我在某些情况下测试:

情况 1:保留 javamail.jar,删除 appengine-api.jar。邮件发送正常。

情况 2:保留 javamail.jar,仅删除 appengine-api.jar 中的 javax 目录。仍然抛出上述异常。

情况 3:删除 javamail.jar,保留 appengine-api.jar。我打算使用 appengine-api.jar 中的 javax.mail.* 来发送邮件。编译正常,但运行时抛出上述异常。

我使用命令行来制作这个应用程序。我不使用 -classpath 变量,我将所有需要的 jar 文件复制到 .../jdk1.7.0_55/jre/lib/ext

如何一起使用 javamail.jar 和 appengine-api.jar ?

更新:也许我没有说清楚。我不从 appengine 发送邮件。我从 PC 应用程序发送。在该 PC 应用程序中,我必须使用 appengine-api.jar 从数据存储区检索数据。因此,我的 PC 应用程序中需要两个 .jar api 文件。

最佳答案

解决了。

正如我上面所描述的,即使我完全删除appengine-api.jar中的javax.*目录也不起作用。仅当我从/jre/lib/ext 中删除该 jar 文件时它才有效。我认为 appengine-api.jar 中仍然有许多影响 javamail.jar 的“痕迹”。查看该 jar 文件后,我发现 appengine-api.jar/META-INF/中有 3 个文件影响 javamail.jar:

jamamail.address.map
javamail.charset.map
javamail.providers

我删除了这 3 个文件,它就工作了!够了,我不必再删除目录 javax.*,只需删除这 3 个文件即可。

我认为这不是最好的解决方案,但到目前为止我找不到在 PC 应用程序中同时使用 javamail.jar 和 appengine-api.jar 的另一个解决方案。

关于java - 如何一起使用javamail和appengine API?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24162395/

相关文章:

google-app-engine - 从另一个项目 ID 访问现有的云 SQL 实例

eclipse - App Engine Dev App Server 不会在 Eclipse 中更新

如果循环中的数据与第一个循环中的数据不同,则 Java 输出

java - 如何制作圆角方形组图标而不是圆形组图标

java - Java 有检查对象类型的方法吗?

Java - SwingWorker - 问题

google-app-engine - 在谷歌应用引擎上,我如何实现数据库事务?

java - Java发送邮件报错

java - 如何在android中发送html电子邮件?

java - MimeBodyPart getContent 损坏二进制数据