【问题标题】:Unable to parse template "Class"无法解析模板“类”
【发布时间】:2018-01-11 19:54:24
【问题描述】:

我正在尝试在 android 中创建类,但出现此错误

无法解析模板“类” 错误消息:此模板没有生成 Java 类或接口

在事件日志中我得到了这个错误

FileNotFoundException: Entry fileTemplates//code/Google Test Fixture SetUp Method.cc.ft not found in /D:/Android%20Studio/lib/idea.jar

这是我的应用程序 bulid gradle

apply plugin: 'com.android.application'

android
  {

compileSdkVersion 23
buildToolsVersion '25.0.0'

defaultConfig {
    applicationId "com.hh.ss.msed"
    minSdkVersion 14
    targetSdkVersion 26
    versionCode 1
    versionName "1.0"
    multiDexEnabled true


}
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}


dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'

    compile 'com.android.support:appcompat-v7:23.0.0'
    compile 'com.google.firebase:firebase-core:11.0.1'
    compile 'com.google.firebase:firebase-database:11.0.1'
    compile 'com.google.firebase:firebase-crash:11.0.1'
    compile 'com.google.firebase:firebase-storage:11.0.1'
    compile 'com.android.support:recyclerview-v7:23.0.0'
    compile 'com.android.support:cardview-v7:23.0.0'
    compile 'com.firebaseui:firebase-ui-database:0.6.2'


    compile 'com.firebase:firebase-client-android:2.4.0'
    compile 'com.squareup.picasso:picasso:2.5.2'
    compile 'com.android.support:support-v4:23.0.0'


}


packagingOptions {
    exclude 'META-INF/DEPENDENCIES.txt'
    exclude 'META-INF/LICENSE.txt'
    exclude 'META-INF/NOTICE.txt'
    exclude 'META-INF/NOTICE'
    exclude 'META-INF/LICENSE'
    exclude 'META-INF/DEPENDENCIES'
    exclude 'META-INF/notice.txt'
    exclude 'META-INF/license.txt'
    exclude 'META-INF/dependencies.txt'
    exclude 'META-INF/LGPL2.1'
   }
  }
  apply plugin: 'com.google.gms.google-services'

这个 bulid gradle 项目

// Top-level build file where you can add configuration options common to all sub-projects/modules.

  buildscript {
  repositories {
    jcenter()
  }
  dependencies {
    classpath 'com.android.tools.build:gradle:2.3.3'
    classpath 'com.google.gms:google-services:3.1.0'

    // NOTE: Do not place your application dependencies here; they belong
    // in the individual module build.gradle files
    }
 }

 allprojects {
  repositories {
    jcenter()
  }
}

task clean(type: Delete) {
  delete rootProject.buildDir
}

怎么了?

【问题讨论】:

  • 来吧。我们应该猜测代码是什么样的吗?
  • 这个主要活动我在创建新项目时没有任何代码我无法创建新类
  • @John3136 当您单击文件 > 新建 > Java 类时发生这种情况
  • 我在 IntelliJ Idea 上遇到了同样的问题(Android Studio 基于 IntelliJ),修复方法与此处建议的完全相同。

标签: java android android-studio


【解决方案1】:

在我的情况下,它以前可以工作,但突然开始显示此错误消息。 我尝试了上述一些答案,但无济于事,因此清除缓存解决了我的问题。

Intellij 上转到 File > Invalidate caches/Restart 并选择 Invalidate and Restart 选项。

希望对你有帮助。

【讨论】:

  • 简单来说,这是在最好的情况下尝试在任何其他答案之前这样做
  • 遇到类似问题“unable to parse template class error there should only 1 yaml document per file”,通过Invalidate and Restart解决
【解决方案2】:

我发现我的Idea 14也有同样的问题,但是刚安装的时候不是这样,后来我发现它是在安装protobuf插件后出现的。如果您卸载 protobuf 插件,它会再次起作用。

也许会帮助某人...

【讨论】:

    【解决方案3】:

    我也遇到过同样的问题,但我已经通过以下步骤解决了这个问题:

    第一步:进入文件菜单>>设置

    第 2 步:然后点击编辑器,然后点击文件和代码模板

    第 3 步:现在选择类

    Step4 : 之后将此代码粘贴到编辑器中。有关详细信息,请参见图片。

    #if (${PACKAGE_NAME} && ${PACKAGE_NAME} != "")package ${PACKAGE_NAME};#end #parse("File Header.java") public class ${NAME} { }
    

    【讨论】:

      【解决方案4】:

      转到文件 然后设置 -> 编辑器 -> 文件和代码模板,在文件选项卡中选择类并粘贴 " #if (${PACKAGE_NAME} && ${PACKAGE_NAME} != "")package ${PACKAGE_NAME};#end #parse("File Header.java") public class ${NAME} { }" 然后点击应用。

      【讨论】:

        【解决方案5】:

        我在使用 IntelliJ IDEA 14 的 Mac 上,我在这里找到了文件 idea.vmoptions:

        ~/Applications/IntelliJ IDEA 14 (Right click Show Package Contents) /Contents/bin/idea.vmoptions
        

        然后我添加了顶级回答者建议的同一行:

        -Djdk.util.zip.ensureTrailingSlash=false
        

        【讨论】:

          【解决方案6】:

          我遇到了同样的问题,只是我似乎没有更改任何设置或更新 Android Studio。我通过选择解决了它

          File -> Invalidate Caches & Restart
          

          【讨论】:

            【解决方案7】:

            我以前没有遇到过这个错误。我只有在重新安装我的 android studio(3.0 版)后才遇到这个问题。如问题中所述,创建新类会出现以下错误。

            无法解析模板“类”错误消息:此模板没有 生成 Java 类或接口

            所以有两种方法可以摆脱这个错误

            选项 1 是@分号答案

            转到文件->设置->编辑器->文件和代码模板,在文件选项卡中选择类并编写此

            #if (${PACKAGE_NAME} && ${PACKAGE_NAME} != "")package ${PACKAGE_NAME};#end #parse("File Header.java") public class ${NAME} { }
            

            选项 2 是 @Angel Castelo 回答

            将以下行添加到您的 VM 自定义选项 (studio.vmoptions)。

            -Djdk.util.zip.ensureTrailingSlash=false
            

            我的建议是使用 android studio 添加它(选择帮助->编辑自定义 VM 选项->然后添加代码)。如果您之前没有创建自定义 VM 选项文件,它将提示一个对话框,提及“自定义 VM 选项文件不存在。您要创建它吗”选择是,工作室将创建一个自定义 VM 选项文件。然后按照步骤(上面提到的)。

            结论

            哪个更好?

            当我第一次遇到这个问题时,我选择了选项一,它运行良好,直到我开始我的下一个项目。当我开始一个新项目时,问题再次出现,所以我访问了这个页面并找到了 option 2,它对我来说非常有效。

            当我们遵循选项 2 时,创建新项目不会再次触发此问题,这与 选项 1 不同。

            进一步阅读

            Intellij Support Page

            Android Developer Page

            Read more about Android Studio file templates

            【讨论】:

              【解决方案8】:

              这所有的答案可能都是正确的,而且工作得很好,我使用这个选项几天,它也对我有用,但是还有另一个选项,我认为哪个更好,因为这个选项由 android developer,如下所示:

              类文件模板:

              #if (${PACKAGE_NAME} != "")package ${PACKAGE_NAME};#end
              
                  #if (${IMPORT_BLOCK} != "")${IMPORT_BLOCK}
                  #end
                  #parse("File Header.java")
              
                  #if (${VISIBILITY} == "PUBLIC")public #end #if (${ABSTRACT} == "TRUE")abstract #end #if (${FINAL} == "TRUE")final #end class ${NAME} #if (${SUPERCLASS} != "")extends ${SUPERCLASS} #end #if (${INTERFACES} != "")implements ${INTERFACES} #end {
                  }
              

              接口文件模板

              #if (${PACKAGE_NAME} != "")package ${PACKAGE_NAME};#end
              
              #if (${IMPORT_BLOCK} != "")${IMPORT_BLOCK}
              #end
              #parse("File Header.java")
              
              #if (${VISIBILITY} == "PUBLIC")public #end enum ${NAME} #if (${INTERFACES} != "")implements ${INTERFACES} #end {
              #end {
              }
              

              【讨论】:

                【解决方案9】:

                我有同样的问题,并通过在idea.vmoptionsidea64.vmoptions 添加以下行来解决:

                -Djdk.util.zip.ensureTrailingSlash=false
                

                JetBrains Support by user Wojciech Fred所示

                似乎是 oracle 对 Java 8 Update 144 应用的修复

                希望对你有帮助:D

                编辑: 在 Android Studio 中,该文件名为 studio.vmoptions,可以在配置目录中找到,但如果您转到“帮助>编辑自定义 VM 选项”菜单,则更容易: Android Studio Configuration

                【讨论】:

                • 在 Linux 机器中哪里可以找到 idea.vmoptions 文件?
                • 在 Android Studio 中,最简单的方法是通过菜单。在“帮助 > 编辑自定义 VM 选项”中,编辑器打开文件,您可以在此处添加该行。
                • 是的,找到了,Android Studio -> 帮助 -> 编辑自定义 VM 选项
                • 这为我在 Ubuntu 64 位的最新 Studio (2.3.3) 上修复了它。非常感谢!
                • 我使用的是 Android Studio 2.3,无论如何我都找不到任何名为 studio.vmoptions 的文件。正如您所建议的,我尝试了帮助>编辑自定义 VM 选项,但是说 studio.exe.vmoptions 不存在,并询问我是否要创建它。这可能是您正在谈论的文件吗?它放在 Android Studio\bin
                【解决方案10】:

                在您的 IntelliJ IDE 中,转到 Help => Edit Custom VM Options 并将以下行添加到您的 idea.vmoptions 或 idea64.vmoptions 中:

                -Djdk.util.zip.ensureTrailingSlash=false

                您可以在herehere 阅读更多相关信息。

                【讨论】:

                  【解决方案11】:

                  转到文件->设置->编辑器->文件和代码模板,在文件选项卡中选择类并粘贴:

                  #if (${PACKAGE_NAME} && ${PACKAGE_NAME} != "")package ${PACKAGE_NAME};#end #parse("File Header.java") public class ${NAME} { }
                  

                  【讨论】:

                  • 应该有办法让 Google 或 IntelliJ(或维护 Android Studio 的人)修复此错误。我真的怀疑这是因为 OP 或我所做的任何事情。
                  • 太棒了.. 非常感谢.. 它帮助了我.. 但我想知道这一点,为什么会发生这种情况以及您是如何解决的。
                  【解决方案12】:

                  分号的诀窍有效 类似地添加接口转到

                  Android Studio -> Preferences -> File and Code Templates -> Files -> Interface
                  

                  并添加以下代码

                  #if (${PACKAGE_NAME} && ${PACKAGE_NAME} != "")package ${PACKAGE_NAME};#end #parse("File Header.java") public interface ${NAME} { }
                  

                  【讨论】:

                    【解决方案13】:

                    我在 android studio 中遇到过这样的事情。我所做的是打开 IntelliJ Idea(因为 Android Studio 是基于它的),并复制相应模板的默认文本并粘贴到 android studio 相应文件中。

                    转到文件->设置->编辑器->文件和代码模板,在文件选项卡中选择类并编写此

                    #if (${PACKAGE_NAME} && ${PACKAGE_NAME} != "")package ${PACKAGE_NAME};#end #parse("File Header.java") public class ${NAME} { } 
                    

                    【讨论】:

                    • 我认为这应该是答案!
                    • 那么这是 Android Studio 安装问题吗?
                    • 这不是为我添加超类(例如,... extends View)。可能是什么问题?
                    【解决方案14】:

                    原因是您可能在 32 位机器上安装了 64 位版本。我有同样的问题。如果您有 32 位操作系统,请尝试从该页面卸载 64 位版本的 Android Studio 并安装 32 位版本:https://developer.android.com/studio/index.html#downloads

                    【讨论】:

                      【解决方案15】:

                      您好,我遇到了同样的错误,该错误是由于 Java 文件头模板中的语法错误造成的。我通过以下方式解决了它:

                      转到:

                      Android Studio -> Preferences -> File and Code Templates -> Includes -> File Header
                      

                      如果你在模板中定义了一些变量,检查变量是如何定义的,应该是(例如):

                      #set( $USER = "Your Name")
                      

                      而不是

                      #set( USER  "Your Name")
                      

                      希望对你有帮助

                      【讨论】:

                        猜你喜欢
                        • 1970-01-01
                        • 1970-01-01
                        • 1970-01-01
                        • 1970-01-01
                        • 1970-01-01
                        • 2019-02-20
                        • 1970-01-01
                        • 1970-01-01
                        • 2011-08-04
                        相关资源
                        最近更新 更多