How to solve: “error: cannot find symbol class …”

2019-06-21 03:59发布

问题:

I'm trying to start with Kotlin by converting some Java classes of my project to Kotlin and create a mixed Java/Kotlin project. In order to configure the environment I did the following:

  1. Downloaded the latest version of Kotlin plugin (1.0.2);
  2. On the top level gradle.plugin I've added: classpath "org.jetbrains.kotlin:kotlin-android-extensions:1.0.2" in the dependencies section;
  3. In my module's gradle plugin I've added: compile "org.jetbrains.kotlin:kotlin-stdlib:1.0.2" in the dependencies section;
  4. I've picked the POJO class I wanted to convert to kotlin, selected from menu Code -> Convert Java File to Kotlin File;
  5. After that, all Java classes that were importing the converted class started to display: error: cannot find symbol class Chat. Below are the original class, the converted class and the log:

Original Java class:

package br.com.gogame.model;

import com.google.gson.Gson;
import com.orm.SugarRecord;
import com.orm.dsl.Ignore;

import java.io.Serializable;
import java.util.List;

import br.com.gogame.model.enums.ChatType;

/**
 * Created by edgar on 11-Apr-16.
 */
public class Chat extends SugarRecord implements Serializable {

    private String title;
    private String thumbnail;
    private ChatType chat_type;
    private long chat_id;
    private int num_of_members;
    private long user_id;
    @Ignore
    private List<Long> users;

    public Chat() {
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getThumbnail() {
        return thumbnail;
    }

    public void setThumbnail(String thumbnail) {
        this.thumbnail = thumbnail;
    }

    public ChatType getChat_type() {
        return chat_type;
    }

    public void setChat_type(ChatType chat_type) {
        this.chat_type = chat_type;
    }

    public long getChat_id() {
        return chat_id;
    }

    public void setChat_id(long chat_id) {
        this.chat_id = chat_id;
    }

    public int getNum_of_members() {
        return num_of_members;
    }

    public void setNum_of_members(int num_of_members) {
        this.num_of_members = num_of_members;
    }

    public long getUser_id() {
        return user_id;
    }

    public void setUser_id(long user_id) {
        this.user_id = user_id;
    }

    public List<Long> getUsers() {
        return users;
    }

    public void setUsers(List<Long> users) {
        this.users = users;
    }

    @Override
    public String toString() {
        Gson gson = new Gson();
        return gson.toJson(this, Chat.class);
    }
}

Converted Kotlin class

package br.com.gogame.model

import com.orm.SugarRecord
import com.orm.dsl.Ignore

import java.io.Serializable

import br.com.gogame.model.enums.ChatType

/**
 * Created by edgar on 11-Apr-16.
 */
class Chat : SugarRecord(), Serializable {
    var title: String? = null
    var thumbnail: String? = null
    var chat_type: ChatType? = null
    var chat_id: Long = 0
    var num_of_members: Int = 0
    var user_id: Long = 0
    @Ignore
    var users: List<Long>? = null
}

Error Log:

C:\SIBEN\Edgar\workspace\GoGame\current\app\src\main\java\br\com\gogame\commons\infra\App.java
    Error:(8, 42) error: cannot find symbol class DaggerMainComponent
    C:\SIBEN\Edgar\workspace\GoGame\current\app\src\main\java\br\com\gogame\view\fragments\FragmentChats.java
    Error:(23, 27) error: cannot find symbol class Chat
    C:\SIBEN\Edgar\workspace\GoGame\current\app\src\main\java\br\com\gogame\communication\post_office\GCMOffice.java
    Error:(25, 27) error: cannot find symbol class Chat
    C:\SIBEN\Edgar\workspace\GoGame\current\app\src\main\java\br\com\gogame\controller\util\JSONParser.java
    Error:(22, 27) error: cannot find symbol class Chat
    Error:(98, 17) error: cannot find symbol class Chat
    Error:(111, 60) error: cannot find symbol class Chat
    C:\SIBEN\Edgar\workspace\GoGame\current\app\src\main\java\br\com\gogame\controller\ChatController.java
    Error:(23, 27) error: cannot find symbol class Chat
    Error:(41, 12) error: cannot find symbol class Chat
    Error:(46, 12) error: cannot find symbol class Chat
    Error:(62, 32) error: cannot find symbol class Chat
    C:\SIBEN\Edgar\workspace\GoGame\current\app\src\main\java\br\com\gogame\commons\util\FakeDataProvider.java
    Error:(7, 27) error: cannot find symbol class Badge
    Error:(8, 27) error: cannot find symbol class Chat
    Error:(21, 24) error: cannot find symbol class Badge
    Error:(94, 24) error: cannot find symbol class Chat
    Error:(106, 20) error: cannot find symbol class Chat
    Error:(118, 20) error: cannot find symbol class Chat
    Error:(130, 20) error: cannot find symbol class Chat
    Error:(142, 20) error: cannot find symbol class Chat
    C:\SIBEN\Edgar\workspace\GoGame\current\app\src\main\java\br\com\gogame\controller\util\NotificationFactory.java
    Error:(19, 27) error: cannot find symbol class Chat
    C:\SIBEN\Edgar\workspace\GoGame\current\app\src\main\java\br\com\gogame\model\dao\ChatDAO.java
    Error:(13, 27) error: cannot find symbol class Chat
    Error:(24, 29) error: cannot find symbol class Chat
    Error:(46, 19) error: cannot find symbol class Chat
    Error:(60, 19) error: cannot find symbol class Chat
    C:\SIBEN\Edgar\workspace\GoGame\current\app\src\main\java\br\com\gogame\model\dao\ChatUserDAO.java
    Error:(7, 27) error: cannot find symbol class Chat
    C:\SIBEN\Edgar\workspace\GoGame\current\app\src\main\java\br\com\gogame\model\dao\Datamanager.java
    Error:(9, 27) error: cannot find symbol class Chat
    C:\SIBEN\Edgar\workspace\GoGame\current\app\src\main\java\br\com\gogame\model\dao\LocalUserDAO.java
    Error:(8, 27) error: cannot find symbol class Chat
    Error:(145, 24) error: cannot find symbol class Chat
    C:\SIBEN\Edgar\workspace\GoGame\current\app\src\main\java\br\com\gogame\view\adapters\BadgesAdapter.java
    Error:(15, 27) error: cannot find symbol class Badge
    Error:(21, 52) error: cannot find symbol class Badge
    Error:(25, 60) error: cannot find symbol class Badge
    C:\SIBEN\Edgar\workspace\GoGame\current\app\src\main\java\br\com\gogame\controller\FriendshipController.java
    Error:(21, 27) error: cannot find symbol class Chat
    Error:(195, 79) error: cannot find symbol class Chat
    Error:(33, 8) error: dagger.internal.codegen.ComponentProcessor was unable to process this class because not all of its dependencies could be resolved. Check for compilation errors or a circular dependency with generated code.
    C:\SIBEN\Edgar\workspace\GoGame\current\app\src\main\java\br\com\gogame\controller\MessageController.java
    Error:(23, 27) error: cannot find symbol class Chat
    Error:(91, 50) error: cannot find symbol class Chat
    Error:(117, 61) error: cannot find symbol class Chat
    Error:(128, 65) error: cannot find symbol class Chat
    Error:(216, 46) error: cannot find symbol class Chat
    Error:(34, 8) error: dagger.internal.codegen.ComponentProcessor was unable to process this class because not all of its dependencies could be resolved. Check for compilation errors or a circular dependency with generated code.
    C:\SIBEN\Edgar\workspace\GoGame\current\app\src\main\java\br\com\gogame\view\activities\ActivityCanvas.java
    Error:(38, 27) error: cannot find symbol class Chat
    Error:(64, 13) error: cannot find symbol class Chat
    Error:(53, 8) error: dagger.internal.codegen.ComponentProcessor was unable to process this class because not all of its dependencies could be resolved. Check for compilation errors or a circular dependency with generated code.
    C:\SIBEN\Edgar\workspace\GoGame\current\app\src\main\java\br\com\gogame\view\activities\ActivityFriends.java
    Error:(22, 27) error: cannot find symbol class Chat
    Error:(196, 13) error: cannot find symbol class Chat
    Error:(39, 8) error: dagger.internal.codegen.ComponentProcessor was unable to process this class because not all of its dependencies could be resolved. Check for compilation errors or a circular dependency with generated code.
    C:\SIBEN\Edgar\workspace\GoGame\current\app\src\main\java\br\com\gogame\view\adapters\ChatAdapter.java
    Error:(26, 27) error: cannot find symbol class Chat
    Error:(35, 50) error: cannot find symbol class Chat
    Error:(43, 58) error: cannot find symbol class Chat
    Error:(35, 8) error: dagger.internal.codegen.ComponentProcessor was unable to process this class because not all of its dependencies could be resolved. Check for compilation errors or a circular dependency with generated code.
    C:\SIBEN\Edgar\workspace\GoGame\current\app\src\main\java\br\com\gogame\commons\infra\dagger\MainComponent.java
    Error:(42, 8) error: dagger.internal.codegen.ComponentProcessor was unable to process this interface because not all of its dependencies could be resolved. Check for compilation errors or a circular dependency with generated code.
    Error:Execution failed for task ':app:compileDebugJavaWithJavac'.
    > Compilation failed; see the compiler error output for details.
    Information:BUILD FAILED
    Information:Total time: 7.406 secs
    Information:51 errors
    Information:4 warnings
    Information:See complete output in console

回答1:

As pointed out by user @Ilya, the problem was that the .kt files weren't being compiled and, therefore, couldn't be recognized when I tried to deploy the app in the device. To solve this problem, all I had to do was add apply plugin: 'kotlin-android' in my module's gradle.build as indicated in the links he has pointed in his comment, and that's all! It works now!



回答2:

I had the same problem & fixed as follows (assuming that apply plugin: kotlin-android is added, but the problem still remains) :

Add sourceSets under android

android {
  ...
  sourceSets {
    main.java.srcDirs += 'src/main/kotlin'
  }
}