Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 添加到Jar以发送电子邮件后出现NoClassDef错误_Java_Android_Email_Android Studio_Classpath - Fatal编程技术网

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模块 除此之外,我还做了以下工作:

我已经进行了一段时间的故障排除,可能会受到影响,所以这将是相当描述性的

目标:只需单击按钮即可发送简单的电子邮件,无需使用外部邮件应用程序

这项研究产生了一种新的方法,它被成功地编译、测试并在个人计算机上执行

因此,在花了一些时间阅读这里的答案后,我按照以下步骤添加了库

  • 右键单击App->newmodule->Import.JAR/.AAR包
  • 使用省略号按钮查找并添加jar
  • 应用程序->模块设置
  • 在模块下,应用程序->依赖项->添加->模块依赖项->选择JAR模块
  • 除此之外,我还做了以下工作:

  • 确保应用程序模块的build.gradle包含依赖项(在本例中,列为compile project(“:javax.mail”)
  • 在项目根目录上,使用并运行
    gradlew clean
    以及
    gradlew build
  • 这已经尝试了其他一些失败的方法,但这些是最新的一系列步骤。Android Studio检测到文件,但当执行时,应用程序崩溃,出现
    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);
            }
        }
    }