【问题标题】:DataGrip org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:DataGrip org.codehaus.groovy.control.MultipleCompilationErrorsException:启动失败:
【发布时间】:2021-01-25 18:49:26
【问题描述】:

我无法使用抽象运行一些基本的 groovy 代码。我已阅读此link 并从 Data Grip 自动生成 pojos 和 rest 控制器。

  1. 在 DataGrip 上,我右键单击,点击“Scripted Extensions”,然后
  2. 选择一个 Groovy 文件。如果文件完全按照“Groovy Pojos.groovy”(见链接)编写,那么它可以工作。
  3. 如果我想围绕可重用​​性使用一些基本的抽象和设计,它就无法工作。甚至无法在 Groovy 中导入类。

我尝试过的简单代码 sn-p

class abstract AGenerate {
abstract def getPackageName() ;
abstract def getFileSuffix() ;
abstract def generateClassFiles()
abstract def generate(output, className, fields) ;
def typeMapping = [
(~/(?i)int/) : "Integer",
(~/(?i)bigint/) : "Long",
(~/(?i)float/): "Double", : "Float",
(~/(?i)double|decimal|real/) : "Double",
(~/(?i)datetime|timestamp/) : "java.sql.Timestamp",
(~/(?i)date/) : "java.sql.Date",
(~/(?i)time/) : "java.sql.Time",
(~/(?i)/) : "String"
]
...  

package com.companyname.autogenerate ;
import com.intellij.database.model.DasTable
import com.intellij.database.model.ObjectKind
import com.intellij.database.util.Case
import com.intellij.database.util.DasUtil
FILES.chooseDirectoryAndSave("Choose directory", "Choose where to store generated files") { dir ->
    SELECTION.filter { it instanceof DasTable && it.getKind() == ObjectKind.TABLE }.each { generateFolderFromTable(it, dir) }
}
class GenerateEntityClass extends AGenerate {
    def getFileSuffix() {
        return "Entity.java"
    }
    def getPackageName() {
        return "com.sample;" ;
    }
...

请注意,我已经定义了一个超类 AGenerate,然后是子类 GenerateEntityClass,尝试在导入行本身运行 AutoGenerate 时出现错误

import com.intellij.database.model.DasTable
import com.intellij.database.model.ObjectKind

import com.mycompany.autogenerate.GenerateEntityClass

 def GenerateEntityClass entityClass = new GenerateEntityClass();
        FILES.chooseDirectoryAndSave("Choose directory", "Choose where to store generated files") { dir ->        
            SELECTION.filter { it instanceof DasTable && it.getKind() == ObjectKind.TABLE }.each { entityClass.generateFolderFromTable(it, dir) }
        }

我收到一个错误

12:06 AM AutoGenerate.groovy: org.codehaus.groovy.control.MultipleCompilationErrorsException: 启动失败:Script24.groovy:4:无法解析类 com.companyname.autogenerate.GenerateEntityClass @ 第 4 行,第 1 列。导入 com.companyname.autogenerate.GenerateEntityClass;

编辑:文件夹结构 项目

-->scripts
----->AutoGenerate.groovy (call this from DataGrip)
----->com
-------->companyname
----------->autogenerate
-------------->AGenerate.groovy
-------------->GenerateEntityClass.groovy
-->src

【问题讨论】:

  • AGenerate 在哪里? Groovy 只是说它不在你的类路径中
  • AGenerate.groovy 位于 com/companyname/autogenerate 文件夹中

标签: groovy datagrip


【解决方案1】:

由于某些原因,抽象不起作用。所以我只是将脚本分隔在不同的文件中(更改的文件和完成的文件)并使用 bash 脚本进行连接。现在这应该工作。直到有人以更好的方式回答这个问题。

【讨论】:

    猜你喜欢
    • 2020-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-25
    • 2014-11-17
    • 2019-08-11
    • 2015-08-24
    相关资源
    最近更新 更多