Java 添加到Jar以发送电子邮件后出现NoClassDef错误
我已经进行了一段时间的故障排除,可能会受到影响,所以这将是相当描述性的 目标:只需单击按钮即可发送简单的电子邮件,无需使用外部邮件应用程序 这项研究产生了一种新的方法,它被成功地编译、测试并在个人计算机上执行 因此,在花了一些时间阅读这里的答案后,我按照以下步骤添加了库Java 添加到Jar以发送电子邮件后出现NoClassDef错误,java,android,email,android-studio,classpath,Java,Android,Email,Android Studio,Classpath,我已经进行了一段时间的故障排除,可能会受到影响,所以这将是相当描述性的 目标:只需单击按钮即可发送简单的电子邮件,无需使用外部邮件应用程序 这项研究产生了一种新的方法,它被成功地编译、测试并在个人计算机上执行 因此,在花了一些时间阅读这里的答案后,我按照以下步骤添加了库 右键单击App->newmodule->Import.JAR/.AAR包 使用省略号按钮查找并添加jar 应用程序->模块设置 在模块下,应用程序->依赖项->添加->模块依赖项->选择JAR模块 除此之外,我还做了以下工作:
gradlew clean
以及gradlew build
NoClassDefFoundError
。直觉说问题在于类路径,但在尝试了几种不同但无效的解决方案之后,是时候让更有经验的人来解决了忠告
供参考:
main活动:
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button testButton = (Button) findViewById(R.id.emailButton);
testButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Emailer.send(getApplicationContext());
}
});
}
}
import android.content.Context;
import android.widget.Toast;
import java.util.Properties;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
public class Emailer {
public static void send(Context context) {
// Recipient's email
String recipient = "myemail@gmail.com";
// Sender information
String sender = "myemail@gmail.com";
final String username = "myUsername";
final String password = "myPassword";
String host = "smtp.gmail.com";
Properties properties = new Properties();
properties.put("mail.smtp.auth", "true");
properties.put("mail.smtp.socketFactory.port", "465");
properties.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
properties.put("mail.smtp.host", host);
properties.put("mail.smtp.port", "25");
Session session = Session.getInstance(properties,
new javax.mail.Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, password);
}
});
try {
// constructing the email
Message message = new MimeMessage(session);
message.setFrom(new InternetAddress(sender));
message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(recipient));
message.setSubject("Email Test");
message.setText("Testing the email capability using JavaMailAPI on Android");
// Sending
Transport.send(message);
Toast.makeText(context, R.string.email_success, Toast.LENGTH_SHORT).show();
} catch (MessagingException e) {
throw new RuntimeException(e);
}
}
}
电子邮件发送者:
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button testButton = (Button) findViewById(R.id.emailButton);
testButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Emailer.send(getApplicationContext());
}
});
}
}
import android.content.Context;
import android.widget.Toast;
import java.util.Properties;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
public class Emailer {
public static void send(Context context) {
// Recipient's email
String recipient = "myemail@gmail.com";
// Sender information
String sender = "myemail@gmail.com";
final String username = "myUsername";
final String password = "myPassword";
String host = "smtp.gmail.com";
Properties properties = new Properties();
properties.put("mail.smtp.auth", "true");
properties.put("mail.smtp.socketFactory.port", "465");
properties.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
properties.put("mail.smtp.host", host);
properties.put("mail.smtp.port", "25");
Session session = Session.getInstance(properties,
new javax.mail.Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, password);
}
});
try {
// constructing the email
Message message = new MimeMessage(session);
message.setFrom(new InternetAddress(sender));
message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(recipient));
message.setSubject("Email Test");
message.setText("Testing the email capability using JavaMailAPI on Android");
// Sending
Transport.send(message);
Toast.makeText(context, R.string.email_success, Toast.LENGTH_SHORT).show();
} catch (MessagingException e) {
throw new RuntimeException(e);
}
}
}