找不到异步任务/邮件。java显然存在,那么问题是什么呢
我有一个android应用注册表单,它必须向用户发送一封成功注册的电子邮件,但单击submit按钮,当我调用该类时,会出现以下错误:找不到异步任务/邮件。java显然存在,那么问题是什么呢,java,android,Java,Android,我有一个android应用注册表单,它必须向用户发送一封成功注册的电子邮件,但单击submit按钮,当我调用该类时,会出现以下错误: FATAL EXCEPTION: AsyncTask #1 java.lang.RuntimeException: An error occured while executing doInBackground() at android.os.AsyncTask$3.done(AsyncTask.java:200) at java.util.co
FATAL EXCEPTION: AsyncTask #1
java.lang.RuntimeException: An error occured while executing doInBackground()
at android.os.AsyncTask$3.done(AsyncTask.java:200)
at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:274)
at java.util.concurrent.FutureTask.setException(FutureTask.java:125)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:308)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:581)
at java.lang.Thread.run(Thread.java:1019)
Caused by: java.lang.NoClassDefFoundError: net.asdqwe.utilities.Mail
at net.asdqwe.utilities.EmailSender.sendEmail(EmailSender.java:8)
at net.asdqwe.activities.Signup$sendVerificationEmail.doInBackground(Signup.java:308)
at net.asdqwe.activities.Signup$sendVerificationEmail.doInBackground(Signup.java:1)
at android.os.AsyncTask$2.call(AsyncTask.java:185)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:306)
... 4 more
下面是调用它的代码:
public class Signup extends Activity implements OnClickListener, {
@Override
public void onClick(View arg0) {
//some irrelevant code here
Intent signupSuccessAvatarUpload = new Intent(getApplicationContext(), SignupSuccessAvatarUpload.class);
signupSuccessAvatarUpload.putExtra("userEmailID", userEmail);
try {
new sendVerificationEmail().execute();
} catch (Exception e) {}
addNewContact();
startActivityForResult(signupSuccessAvatarUpload, 1);
//finish();
}
class sendVerificationEmail extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... params) {
try {
emailSender.sendEmail(userEmail, configurationz.EMAIL_OFFICIAL_ADDRESS, configurationz.EMAIL_SUCCESSFUL_SIGNUP_SUBJECT, configurationz.EMAIL_SUCCESSFUL_SIGNUP_BODY(userName), null);
} catch (Exception e) {}
return null;
}
}
}
在同一个包中还有邮件类:
public class Mail extends javax.mail.Authenticator {
//lots of code here
public Mail() {
host = "smtp.googlemail.com"; // default smtp server
port = "465"; // default smtp port
sport = "465"; // default socketfactory port
user = ""; // username
password = ""; // password
from = ""; // email sent from
subject = ""; // email subject
body = ""; // email body
_debuggable = false; // debug mode on or off - default off
_auth = true; // smtp authentication - default on
multipart = new MimeMultipart();
// There is something wrong with MailCap, javamail can not find a
// handler for the multipart/mixed part, so this bit needs to be added.
MailcapCommandMap mc = (MailcapCommandMap) CommandMap.getDefaultCommandMap();
mc.addMailcap("text/html;; x-java-content-handler=com.sun.mail.handlers.text_html");
mc.addMailcap("text/xml;; x-java-content-handler=com.sun.mail.handlers.text_xml");
mc.addMailcap("text/plain;; x-java-content-handler=com.sun.mail.handlers.text_plain");
mc.addMailcap("multipart/*;; x-java-content-handler=com.sun.mail.handlers.multipart_mixed");
mc.addMailcap("message/rfc822;; x-java-content-handler=com.sun.mail.handlers.message_rfc822");
CommandMap.setDefaultCommandMap(mc);
}
public Mail(String user, String pass) {
this();
this.user = user;
password = pass;
}
}
您是否导入了javax.mail.Authenticator所需的jar文件
如果要使用javax.mail.Authenticator
,则必须导入这些库
private static void fixClassLoaderIssue()
{
ClassLoader myClassLoader = YourClassName.class.getClassLoader();
Thread.currentThread().setContextClassLoader(myClassLoader);
}
- -包含实际的smtp实现
- -mail.jar需要
如果问题仍然存在,请清理项目并按照以下说明操作 将这段代码添加到Mail活动中,并从其默认构造函数中调用该函数
private static void fixClassLoaderIssue()
{
ClassLoader myClassLoader = YourClassName.class.getClassLoader();
Thread.currentThread().setContextClassLoader(myClassLoader);
}
这是一种试错法,但大多数情况下都有效
Remove the libraries, clean the project, restart eclipse and import
them again & "Android Tools > Fix Project Properties.
希望这有帮助这里有些奇怪,如果
EmailSender
和Mail
在同一个包中,为什么在EmailSender
中导入Mail
?另外,你确定打包的应用程序是最新的(你重新打包,重新安装了吗)?我导入了邮件以防万一。不管怎样,它都不起作用。就应用程序而言,我已经卸载了它,然后再次安装并运行了它。我将尝试重新启动eclipse。当使用eclipse部署时,有时包不会更新,可以肯定的是,您可以在设备(或模拟器)上卸载,然后在“清理项目”后使用eclipse重新部署。我刚刚这样做,没有更改:(清理、刷新、重新启动Eclipse。清除缓存,卸载设备上的应用程序。我想我的代码有问题。…@J.Kowalski你从ElseWhere导入邮件类了吗?是的,我已经导入了那些JAR。关于你提供的代码-我应该用其他东西更改MyClass,还是只是按原样粘贴它?嗯,将MyClass更改为Mail,添加了这段代码,从构造函数中调用它,但对正在发生的事情没有任何更改。此外,还清理并刷新了项目。我认为错误在于我使用async task的方式…。@J.Kowalski删除库,清理项目,重新启动eclipse并再次导入它们&“Android工具>修复项目属性。这是一种尝试&错误方法,但有时会奏效哇,这对我很有帮助,因为当我去配置构建路径时,我无意中单击了Order和Export,这两个库就在那里,但复选框中没有勾号,所以我选中了它们,错误就消失了。类是(可能)找到了,我运行了应用程序,在提交时,我被成功重定向到下一个活动。发送电子邮件仍然不起作用,但我认为这是另一个主题。如果您提供这个答案,我将接受。(我还重新导入了库)@我想这是另一个问题,请发布一个新问题,并在那里提供所有必要的细节。我将非常乐意帮助您。:)