title: Why do I have problems whith 'com.jakewharton:butterknife:7.0.1' in Android Studio 3.0?
body: <p>I have the following problem when I run the 'app' (Android studio emulator):</p>
  
  <pre><code>Error:Execution failed for task ':app:javaPreCompileDebug'.
  &gt; Annotation processors must be explicitly declared now.  The following dependencies on the compile classpath are found to contain annotation processor.  Please add them to the annotationProcessor configuration.
      - butterknife-7.0.1.jar (com.jakewharton:butterknife:7.0.1)
    Alternatively, set android.defaultConfig.javaCompileOptions.annotationProcessorOptions.includeCompileClasspath = true to continue with previous behavior.  Note that this option is deprecated and will be removed in the future.
    See https://developer.android.com/r/tools/annotation-processor-error-message.html for more details.
  </code></pre>
  
  <p>My Graddle-App Level:</p>
  
  <pre><code>apply plugin: 'com.android.application'
  
  android {
      compileSdkVersion 25
      buildToolsVersion '26.0.2'
  
      defaultConfig {
          applicationId "com.hhhhh.android"
          minSdkVersion 15
          targetSdkVersion 25
          versionCode 1
          versionName "1.0"
      }
      buildTypes {
          release {
              minifyEnabled false
              proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
          }
      }
  }
  
  dependencies {
  
      implementation 'com.google.firebase:firebase-database:11.0.4'
      implementation 'com.google.firebase:firebase-auth:11.0.4'
      compile fileTree(include: ['*.jar'], dir: 'libs')
      compile 'com.android.support:appcompat-v7:25.2.0'
      compile 'com.android.support:design:25.0.1'
      compile 'com.jakewharton:butterknife:7.0.1'
  
  }
  
  apply plugin: 'com.google.gms.google-services'
  </code></pre>
  
  <hr>
  
  <p>The error disappears when I switch to the version: </p>
  
  <pre><code>compile 'com.jakewharton:butterknife:8.7.0'
  </code></pre>
  
  <p>But it generates more problems in my LogginActivity:</p>
  
  <pre><code>package com.sourcey.materiallogindemo;
  
  import android.app.ProgressDialog;
  import android.os.Bundle;
  import android.support.v7.app.AppCompatActivity;
  import android.util.Log;
  
  import android.content.Intent;
  import android.view.View;
  import android.widget.Button;
  import android.widget.EditText;
  import android.widget.TextView;
  import android.widget.Toast;
  
  import butterknife.ButterKnife;
  import butterknife.Bind;
  
  public class LoginActivity extends AppCompatActivity {
      private static final String TAG = "LoginActivity";
      private static final int REQUEST_SIGNUP = 0;
  
      @Bind(R.id.input_email) EditText _emailText;
      @Bind(R.id.input_password) EditText _passwordText;
      @Bind(R.id.btn_login) Button _loginButton;
      @Bind(R.id.link_signup) TextView _signupLink;
  
      @Override
      public void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_login);
          ButterKnife.bind(this);
  
          _loginButton.setOnClickListener(new View.OnClickListener() {
  
              @Override
              public void onClick(View v) {
                  login();
              }
          });
  
          _signupLink.setOnClickListener(new View.OnClickListener() {
  
              @Override
              public void onClick(View v) {
                  // Start the Signup activity
                  Intent intent = new Intent(getApplicationContext(), SignupActivity.class);
                  startActivityForResult(intent, REQUEST_SIGNUP);
                  finish();
                  overridePendingTransition(R.anim.push_left_in, R.anim.push_left_out);
              }
          });
      }
  
      public void login() {
          Log.d(TAG, "Login");
  
          if (!validate()) {
              onLoginFailed();
              return;
          }
  
          _loginButton.setEnabled(false);
  
          final ProgressDialog progressDialog = new ProgressDialog(LoginActivity.this,
                  R.style.AppTheme_Dark_Dialog);
          progressDialog.setIndeterminate(true);
          progressDialog.setMessage("Authenticating...");
          progressDialog.show();
  
          String email = _emailText.getText().toString();
          String password = _passwordText.getText().toString();
  
          // TODO: Implement your own authentication logic here.
  
          new android.os.Handler().postDelayed(
                  new Runnable() {
                      public void run() {
                          // On complete call either onLoginSuccess or onLoginFailed
                          onLoginSuccess();
                          // onLoginFailed();
                          progressDialog.dismiss();
                      }
                  }, 3000);
      }
  
  
      @Override
      protected void onActivityResult(int requestCode, int resultCode, Intent data) {
          if (requestCode == REQUEST_SIGNUP) {
              if (resultCode == RESULT_OK) {
  
                  // TODO: Implement successful signup logic here
                  // By default we just finish the Activity and log them in automatically
                  this.finish();
              }
          }
      }
  
      @Override
      public void onBackPressed() {
          // Disable going back to the MainActivity
          moveTaskToBack(true);
      }
  
      public void onLoginSuccess() {
          _loginButton.setEnabled(true);
          finish();
      }
  
      public void onLoginFailed() {
          Toast.makeText(getBaseContext(), "Login failed", Toast.LENGTH_LONG).show();
  
          _loginButton.setEnabled(true);
      }
  
      public boolean validate() {
          boolean valid = true;
  
          String email = _emailText.getText().toString();
          String password = _passwordText.getText().toString();
  
          if (email.isEmpty() || !android.util.Patterns.EMAIL_ADDRESS.matcher(email).matches()) {
              _emailText.setError("enter a valid email address");
              valid = false;
          } else {
              _emailText.setError(null);
          }
  
          if (password.isEmpty() || password.length() &lt; 4 || password.length() &gt; 10) {
              _passwordText.setError("between 4 and 10 alphanumeric characters");
              valid = false;
          } else {
              _passwordText.setError(null);
          }
  
          return valid;
      }
  }
  </code></pre>
  
  <p>With 8.7.0:</p>
  
  <p><a href="https://i.stack.imgur.com/tY32p.png" rel="noreferrer"><img src="https://i.stack.imgur.com/tY32p.png" alt="enter image description here"></a></p>