如何解决:“错误:找不到符号类..."将Java类转换为Kotlin之后? [英] How to solve: "error: cannot find symbol class ..." after converting Java class to Kotlin?

查看:891
本文介绍了如何解决:“错误:找不到符号类..."将Java类转换为Kotlin之后?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图通过将项目中的某些Java类转换为Kotlin并创建一个Java/Kotlin混合项目来开始Kotlin.为了配置环境,我执行了以下操作:

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. 下载了最新版本的Kotlin插件(1.0.2);
  2. 在最高级别的gradle.plugin上,我在依赖项部分添加了:classpath "org.jetbrains.kotlin:kotlin-android-extensions:1.0.2"
  3. 在模块的gradle插件中,我添加了:compile "org.jetbrains.kotlin:kotlin-stdlib:1.0.2"在依赖项"部分;
  4. 我从菜单代码"->将Java文件转换为Kotlin文件"中选择了要转换为kotlin的POJO类;
  5. 之后,所有导入转换后的类的Java类开始显示:error: cannot find symbol class Chat.以下是原始类,转换后的类和日志:
  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:

原始Java类:

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);
    }
}

转换成Kotlin的班级

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
}

错误日志:

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

推荐答案

正如用户@Ilya所指出的那样,问题在于.kt文件没有被编译,因此在我尝试时无法识别在设备中部署应用程序.为了解决这个问题,我所要做的就是在模块的gradle.build中添加apply plugin: 'kotlin-android',如他在评论中指出的链接所示,仅此而已!现在可以使用了!

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!

这篇关于如何解决:“错误:找不到符号类..."将Java类转换为Kotlin之后?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆