无法编译Kotlin代码

问题描述:

我想实现用kotlin编写的Facebook登录。下面的代码工作正常:无法编译Kotlin代码

包social.social

import android.content.Intent 
import android.support.v7.app.AppCompatActivity 
import android.os.Bundle 
import com.facebook.* 
import com.facebook.login.LoginResult 
import com.facebook.login.LoginManager 
import com.facebook.login.widget.LoginButton 
import org.json.JSONObject 
import java.util.* 


class MainActivity : AppCompatActivity() { 
    private var callbackManager: CallbackManager? = null 

    override fun onCreate(savedInstanceState: Bundle?) { 
     super.onCreate(savedInstanceState) 
     setContentView(R.layout.activity_main) 

     callbackManager = CallbackManager.Factory.create() 
     var loginBtn: LoginButton = findViewById(R.id.login_button) as LoginButton 
     loginBtn.setReadPermissions(Arrays.asList("public_profile","email","user_photos")) 
     loginBtn.registerCallback(callbackManager, object : FacebookCallback<LoginResult> { 
      override fun onCancel() { 
       TODO("not implemented") //To change body of created functions use File | Settings | File Templates. 
      } 


      override fun onError(error: FacebookException) { 
       print("error" +error.message) 
      } 

      override fun onSuccess(result: LoginResult) { 
       GraphRequest.newMeRequest(result.accessToken, GraphRequest.GraphJSONObjectCallback { 
        obj: JSONObject, response: GraphResponse -> 
        println(obj.toString()) 
        println(obj.getString("email"))}) 
       println("successful" + result.accessToken) 
      } 
     }) 
    } 



    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { 
     super.onActivityResult(requestCode, resultCode, data) 
     callbackManager!!.onActivityResult(requestCode, resultCode, data) 
    } 

} 

我尝试添加参数GraphRequest所以我需要将它存储到一个变量,像这样:

val request: GraphRequest = GraphRequest.newMeRequest(result.accessToken, GraphRequest.GraphJSONObjectCallback { 
        obj: JSONObject, response: GraphResponse -> 
        println(obj.toString()) 
        println(obj.getString("email"))}) 
       request.executeAsync() 

但现在它编译失败

错误:执行任务':app:compileDebugJavaWithJavac'失败。

Unable to read class file: 'C:\projects\social\app\build\tmp\kotlin-classes\debug\social\social\MainActivity$onCreate$1$onSuccess$1.class'

我是一个初学者科特林但似乎科特林代码的图形要求创造了一个汇编error.So,不如把它写在Java和它转换为科特林和重建+清洁你的代码或者更新Kotlin插件。

+0

嗯..终于修好了。原来我只需要运行gradle clean。 –

+0

很高兴听到@ Karlo – Haileapp