【问题标题】:Could not successfully Import class in Groovy?无法在 Groovy 中成功导入类?
【发布时间】:2011-07-10 09:48:49
【问题描述】:

我在一个名为 business.groovy 的文件中创建了一个名为 VendorAddress 的两个类(即我使用名称 business 创建了包) 在同一个文件夹中,我创建了另一个导入业务包并利用 Vendor 类属性的 groovy 代码(Vendor 是业务包中的类)。但是当我尝试在那个 groovy 脚本中为 Vendor 创建一个对象时,它会抛出错误说明:

/home/Anto/Groovy/pakg/Imports.groovy: 2: 无法解析类 Vendor @ 第 2 行,第 13 列。 def canoo = new Vendor()

我该怎么办?我哪里做错了?

这些是我创建的文件: business.groovy

package business
class Vendor {
public String name
public String product
public Address address = new Address()
}
class Address {
public String street, town, state
public int zip
}

impotTesting.groovy

import business.*
def canoo = new Vendor()
canoo.name = 'Canoo Engineering AG'
canoo.product = 'UltraLightClient (ULC)'

当我尝试使用 groovy importTesting 命令执行 importTesting.groovy 文件时,我收到了之前提到的错误!

【问题讨论】:

  • 你用什么来编译和运行 groovy 脚本?一些 IDE 或构建工具?

标签: groovy


【解决方案1】:

我建议您使用诸如AntGradle 之类的构建工具,或诸如IntelliJ IDEA 之类的IDE 来控制您的类路径/编译/运行时需求。

编辑:应该是这样的:

baseDir/business/business.groovy
baseDir/impotTesting.groovy

您编译的类也应该类似于相同的目录结构:

baseDir/business/business*.class  
baseDir/impotTesting*.class

那么你的 baseDir 应该被添加到 CLASSPATH 中。

【讨论】:

  • 那么您需要修改您的 CLASSPATH 变量以包含已编译的 Groovy 文件所在的文件夹。
  • 是的,我的 groovy 文件正在使用命令(groovyc 和 groovy)编译和运行,但问题出在包中:(
  • 你是否在 Groovy 文件的开头定义了包?
  • 您的 Groovy 文件是否驻留在某个文件夹结构中?你的 CLASSPATH 变量的值是多少?
  • 是的,我愿意:!还有一个关于包定义文件的问题,我必须使用什么扩展名?在 Import 语句中的任何地方使用它之前是否也需要编译它?
【解决方案2】:

一种解决方案是创建包含各自类定义的 Vendor.groovy 和 Address.groovy。

【讨论】:

    【解决方案3】:

    我在学习 Groovy 时遇到了类似的问题。 为了使用groovy 命令(使用Groovy 2.4.12 测试)从命令行运行您的示例,您应该:

    1. 遵循@Andrey Adamovich 建议的 src 文件的目录结构。因此,您的两个 .groovy 文件都应位于 business 文件夹中
    2. 打开cmd,导航到business文件夹的父文件夹,例如src/main/groovy 用于我的项目(我有结构 src/main/groovy/business)。
    3. 使用命令groovy business/importTesting.groovy执行脚本

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-02-25
      • 1970-01-01
      • 1970-01-01
      • 2019-07-20
      • 2020-02-11
      • 2021-11-17
      • 1970-01-01
      相关资源
      最近更新 更多