如何解决:"错误:找不到符号类..."将Java类转换为Kotlin后?

时间:2016-06-21 13:49:01

标签: android kotlin

我试图通过将我的项目的一些Java类转换为Kotlin并创建一个混合的Java / Kotlin项目来开始使用Kotlin。为了配置环境,我做了以下事情:

  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. 我已经选择了我想要转换为kotlin的POJO课程,从菜单代码中选择 - >将Java文件转换为Kotlin文件;
  5. 之后,导入转换后的类的所有Java类开始显示:error: cannot find symbol class Chat。下面是原始类,转换后的类和日志:
  6. 原始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
    

2 个答案:

答案 0 :(得分:10)

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

答案 1 :(得分:1)

我遇到了相同的问题并已解决,如下所示(假设添加了apply plugin: kotlin-android,但问题仍然存在):

Add sourceSets under android

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