如何在另一个 groovy 脚本中简单地导入 groovy 文件

2023-11-22

~/groovy
 % tree
.
├── lib
│   ├── GTemplate.class
│   └── GTemplate.groovy
└── Simple.groovy


class GTemplate {
  static def toHtml() {
    this.newInstance().toHtml1()
  }
  def toHtml1() {
    "test"
  }
}


import lib.*
class Simple extends GTemplate {
}

Error:

% groovyc Simple.groovy org.codehaus.groovy.control.MultipleCompilationErrorsException: 启动失败:编译不完整:期望找到该类 lib.GTemplate 在 /home/bhaarat/groovy/lib/GTemplate.groovy 中,但是 文件包含类:GTemplate 1 错误


看来您将 Groovy 与类似 PHP 的技术混淆了。

因为它更接近Java,如果一个类存在于子文件夹中,它需要存在于同名的包中。在您的示例中,您可以将此行添加到顶部GTemplate.groovy并重新编译文件:

package lib

然而,这意味着 GTemplate 的完全限定名称现在实际上是lib.GTemplate。这可能不是您想要的。

或者,如果您想使用子文件夹中的文件而不使用包,您可以删除import声明来自Simple.groovy,然后像这样编译并运行该类:

groovyc -classpath $CLASSPATH:./lib/ Simple.groovy
groovy -classpath $CLASSPATH:./lib/ Simple

注意:如果您没有CLASSPATH已经设置,您可以简单地使用:

groovyc -classpath ./lib/ Simple.groovy
groovy -classpath ./lib/ Simple

另外,对于 Windows 机器,更改$CLASSPATH: to %CLASSPATH%;

I strongly建议学习包并了解它们的工作原理。看这个关于 Java 包的维基百科文章为起点。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在另一个 groovy 脚本中简单地导入 groovy 文件 的相关文章

  • 使用“评估”功能。为什么它不起作用?

    这段代码 evaluate def test println Test is successful test 结果异常 致命 没有方法签名 script1409644336796288198097 test 适用于参数类型 值 可能的解决方
  • Jenkins 共享库 - 从 /vars 中的 /src 文件夹导入类

    我正在尝试为我的 CI 流程编写一个 Jenkins 共享库 我想引用一个类 src定义在全局函数内的文件夹 vars文件夹 因为它允许我将大部分逻辑放在类中而不是全局函数中 我遵循 Jenkins 官方文档中记录的存储库结构 Jenkin
  • 文本在指定长度后分割,但不要使用 grails 打断单词

    我有一个长字符串 需要将其解析为长度不超过 50 个字符的字符串数组 对我来说 棘手的部分是确保正则表达式找到 50 个字符之前的最后一个空格 以便在字符串之间进行彻底的分隔 因为我不希望单词被切断 public List
  • Jenkins 多分支:更改 Groovy 的工作描述

    我在詹金斯的多分支项目工作正常 但我想修改job描述 默认情况下为 完整项目名称 xxxx 以更有意义 我可以使用以下命令轻松更改构建描述currentBuild当我的变量Jenkinfile已执行 但我不知道如何修改父作业描述 我的用例是
  • 我怎样才能拦截从 Java 到 Groovy 的调用——或者轻松地模拟它

    我本来希望使用 groovy 的 invokeMethod 来做到这一点 但事实证明 当您从 Java 调用 Groovy 时 不会调用 invokeMethod 但否则它会完美地工作 我有一个案例 我将 Groovy 类提交给 Java
  • 如何在不使用 -cp 开关的情况下在 Groovy 中自动加载数据库 jar?

    我想简化调用 Oracle 数据库的 Groovy 脚本的执行 如何将 ojdbc jar 添加到默认类路径以便我可以运行 groovy RunScript groovy 代替 groovy cp ojdbc5 jar RunScript
  • 需要正则表达式帮助

    我正在尝试替换两次或多次出现的 br like br br br 标签与两个一起 br br 具有以下模式 Pattern brTagPattern Pattern compile lt s br s s gt s 2 Pattern CA
  • SOAPUI 方括号括住我的实际结果,导致断言失败

    我正在编写一个 Groovy 脚本断言 该断言根据 SOAP 响应中包含的值来验证先前 JDBC 响应步骤中的值 当我运行脚本时 我可以看到两个值返回相同 但实际结果值 来自 SOAP 响应 被方括号括起来 这反过来又使断言失败 我猜这与一
  • Groovy - 将对象转换为 JSON 字符串

    我非常习惯 Grails 转换器 您可以将任何对象转换为 JSON 表示 就像这样 http grails org Converters Reference http grails org Converters Reference retu
  • Groovy:为什么我需要双转义方括号?

    为什么这不起作用 hello world split 这会 hello world split 这实际上是不同上下文中的两次转义 因为参数是表示为字符串的正则表达式 The 必须进行转义 否则它将在正则表达式中具有特殊含义 正则表达式的转义
  • 当转换为布尔值时,groovy 是否隐式调用 Matcher 上的 find ?

    当我这样做的时候 println line with 1 digit d 它返回 java util regex Matcher pattern d region 0 17 lastmatch 但是当我将它转换为布尔值时 它返回true o
  • 在 Groovy 中分配对象属性的简写方法?

    我使用此约定创建 Groovy 对象 Item item1 new Item name foo weight 150 是否有操作属性对象的速记约定 像这样的东西 item1 name hello weight 175 this does n
  • 从 XML 对象中获取值

    我正在尝试使用 java 获取 XML 对象的值 我的 XML 源
  • 如何让多个 MockFor 在 Groovy 中工作?

    我正在尝试让多个模拟在 groovy 中工作 我成功实现此功能的唯一方法是创建我自己的模拟 添加元方法 我尝试过使用嵌套 use 语句 还尝试了一种使用和一种带验证的代理 但都不起作用 这两个都返回失败 junit framework As
  • Gradle:从另一个插件添加插件依赖项

    我正在创建 gradle 自定义插件 我的任务之一需要确保另一个插件应用于同一项目 因为它将在其之上运行 我希望我的插件的用户避免设置对另一个插件的显式依赖 我想在我的插件中执行此操作 所以 我想要这个插件 https plugins gr
  • 使用转置以完全外连接样式合并列表

    我正在尝试返回一个加入列表 但连接必须像数据库完全外连接一样 例如 给出以下内容 def x a 1 b 2 a 1 b 3 a 2 b 4 a 3 b 5 def y f 10 b 2 g 7 f 100 b 3 g 8 f 20 b 4
  • 在 mule 中使用 groovy 表达式来限制 IP

    我在 mule 中使用 cxf 创建了一个代理服务 我的 mule 版本是 3 3 0 CE 现在 我想在使用代理服务创建的 wsdl 中添加限制 我的限制不应允许他们看到我的 wsdl 的每个 IP 为此 我找到了 Groovy 表达式和
  • 1) Java 和 2) Groovy 自动导入哪些包?

    在 Groovy 中进行过相当多的编程后 我知道某些包中的类会自动导入 1 Java 和 2 Groovy 的独家新闻是什么 是否有一个明确的列表 列出了您不需要为每种语言指定导入的语言 在Java中 默认导入的唯一包是 java lang
  • 访问静态范围内的全局变量

    有没有办法从同一脚本中声明的类的静态方法访问脚本中声明的全局变量 例如 def s 12345 class MyClass static def method println s 因为这样它会因错误而失败 You attempted to
  • 与字符串比较在 Jenkins 管道中不起作用

    知道为什么IF ELSE下面的作品 def checkPrValidity wordCountStr sh returnStdout true script git diff ignore space at eol target branc

随机推荐

  • add_lvalue_reference_t 和 T& 之间的区别

    假设你有一个模板参数T 两者有什么区别 add cv t
  • OpenCV (Emgu.CV)——使用 alpha 合成图像

    我正在使用 Emgu CV 执行一些基本的图像处理和合成 我的图像加载为Image
  • 获取 foreach 循环中的下一个元素

    我有一个 foreach 循环 我想查看循环中是否有下一个元素 以便我可以将当 前元素与下一个元素进行比较 我怎样才能做到这一点 我已阅读有关当前和下一个功能的信息 但我不知道如何使用它们 一种独特的方法是反转数组并then环形 这也适用于
  • TRestClient/TRestRequest 错误地解码 gzip 响应

    我尝试读取 REST API 它是 gzip 编码的 确切地说 我尝试阅读 StackExchange API 我已经找到问题了自动解码 TRESTResponse 中的 GZIP 但由于某种原因 这个答案并不能解决我的问题 测试设置 在X
  • 即使已处理异常,在 VS2010 调试器中也会出现未处理的异常

    我在使用 VS2010 时遇到一个问题 调试器因未处理的异常而停止 不过 异常肯定是得到处理的 事实上 如果我将代码放入 catch 块中 当我按 F5 时就会命中它 在 调试 gt 异常 中 我肯定会这样做not选中 抛出 复选框 因此
  • 挥发性与原子性[重复]

    这个问题在这里已经有答案了 我在下面的某处读到 Java volatile 关键字并不意味着原子 这是它的常见误解 声明 volatile 后 操作将是原子的 以使 您仍然需要使用原子操作来确保独占访问synchronizedJava 中的
  • WCF平台是否独立?

    我只需要知道 WCF 是否像 Webservices 一样与平台无关 Java和Php可以访问WCF中的函数吗 Thanks 是的 当然 WCF 本身只能在 Windows 上运行 但它提供的服务可以从任何其他语言 工具访问 使用 WCF
  • 我可以在基类中重载纯虚方法吗?

    在下面的示例中 我有一个带有纯虚方法 又名 FUN1 和普通方法 又名 FUN2 的抽象类 include
  • 使用返回 impl 特征的泛型函数“借用的值寿命不够长”

    我从这个 Rust 代码中得到一个意外的错误 struct Container lt a gt x a i32 trait Reply impl Reply for i32 fn json
  • For 循环内的 Postgresql 更新

    我对 postgresql 还很陌生 并且在使用 for 循环更新表中的空值列时遇到问题 我正在处理的表格很大 因此为了简洁起见 我将给出一个较小的示例来说明要点 采取下表 id A B C a 1 0 NULL b 1 1 NULL c
  • 如何刷新列表框的数据源

    表单有1个Combobox和1个ListBox 单击 添加 按钮时 我想将组合框中的所选项目添加到列表框中 public partial class MyForm Form List
  • 关闭电脑

    有没有办法使用内置的 Java 方法关闭计算机 创建您自己的函数以通过以下方式执行操作系统命令命令行 举个例子 但正如其他人指出的那样 知道您想要在何处以及为何使用它 public static void main String arg t
  • 如何在 Spring 控制器中检索 FORM/POST 参数?

    我有以下回应 应该来自邮件黑猩猩网络钩子 URL 这是行正文 RAW BODY type usub fired at 2015 07 23 17 3A19 3A34 data 5Baction 5D unsub data 5Breason
  • 禁用 PHPhotoLibrary 中删除请求的确认

    我想做的是将视频保存到 PHPhotoLibrary 然后在应用程序中上传到客户端远程服务器完成时删除它们 基本上 照片库充当临时存储 以添加额外的安全层 以防万一发生任何故障 我已经将我的视频保存在应用程序目录中 Problem 问题是要
  • 使用 Java 从 Github 下载二进制文件

    我正在尝试下载此文件 http github com downloads TheHolyWaffle ChampionHelper ChampionHelper 4 jar 用下面的方法 它似乎不起作用 我收到一个空 损坏的文件 Strin
  • 有没有办法使用curse在同一终端上创建单独的显示和输入?

    我想编写一个命令行程序来生成以下用户界面 A B A 是一个单独的进程 它循环并显示实时事件列表 它会自动刷新 B 是命令提示符 它固定在底部并有命令历史记录 我知道一些命令行 IRC 程序会执行此操作 因此它一定是可能的 如果您能给我一个
  • Stargazer 输出是代码,而不是表格

    我正在尝试使用 RStudio 中的 stargazer 包来生成数据汇总表 由于某种原因 当我使用 html 或 Latex 代码时 我无法查看输出中的表格 但当我输出为文本时 我可以看到它 一个例子 library stargazer
  • 类型错误:google.visualization.DataTable 不是构造函数

    在我的网页上有一个谷歌地图 以及三个图表 当页面加载时 地图很好 但图表要么不加载 要么只有一两个加载 不断收到错误 TypeError google visualization DataTable 不是构造函数 function load
  • 获取返回 StreamedContent 的 的具体 URL

    为了使用灯箱 我需要一个指向由以下命令生成的图像的链接
  • 如何在另一个 groovy 脚本中简单地导入 groovy 文件

    groovy tree lib GTemplate class GTemplate groovy Simple groovy class GTemplate static def toHtml this newInstance toHtml