文章目录

  • 一、Groovy 脚本编译
  • 二、Groovy 脚本字节码文件分析

一、Groovy 脚本编译


Groovy 脚本编译后的字节码文件是一个继承 Script 的类 ;

编译下面的 Script.groovy 脚本 ,

/*使用 groovy Script.groovy arg0 arg1 命令执行该 Script.groovy 脚本在 Groovy 脚本后面带上 arg0 和 arg1 参数在 Groovy 脚本中 , 可以通过 args 获取参数这是一个字符串数组 String[] 类型的*/// 打印 Groovy 脚本参数
println "type : ${args.class} , args : ${args}"

使用

groovyc -d classes Script.groovy

命令 , 编译上面的 Groovy 脚本 ;

二、Groovy 脚本字节码文件分析


编译后的字节码文件如下 :

//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//import groovy.lang.Binding;
import org.codehaus.groovy.runtime.GStringImpl;
import org.codehaus.groovy.runtime.InvokerHelper;
import org.codehaus.groovy.runtime.callsite.CallSite;public class Script extends groovy.lang.Script {public Script() {CallSite[] var1 = $getCallSiteArray();super();}public Script(Binding context) {CallSite[] var2 = $getCallSiteArray();super(context);}public static void main(String... args) {CallSite[] var1 = $getCallSiteArray();var1[0].callStatic(InvokerHelper.class, Script.class, args);}public Object run() {CallSite[] var1 = $getCallSiteArray();return var1[1].callCurrent(this, new GStringImpl(new Object[]{var1[2].callGetProperty(var1[3].callGroovyObjectGetProperty(this)), var1[4].callGroovyObjectGetProperty(this)}, new String[]{"type : ", " , args : ", ""}));}
}

Groovy 脚本编译后生成的是 groovy.lang.Script 类 ; 该类继承自 GroovyObjectSupport 类 ;

groovy.lang.Script 类中有一个 Binding binding 成员 ,


/*** This object represents a Groovy script*/
public abstract class Script extends GroovyObjectSupport {private Binding binding;
}

【Groovy】Groovy 脚本调用 ( Groovy 脚本编译 | Groovy 脚本字节码文件分析 )相关推荐

  1. 【Groovy】闭包 Closure ( 闭包定义 | 闭包类型 | 查看编译后的字节码文件中的闭包类型变量 )

    文章目录 一.闭包定义 二.闭包类型 三.查看编译后的字节码文件中的闭包类型变量 一.闭包定义 闭包 Closure 是 Groovy 中最常用的特性 , 使用闭包作为参数是 Groovy 语言的明显 ...

  2. java源文件到字节码的命令,Java的源代码文件的扩展名是 ,Java源文件通过编译命令编译成的字节码文件(平台无关)的扩展名是 。...

    [判断题]SNMP使用探询以维持对网络资源的实时监视,同时也采用陷阱机制报告特殊事件. [单选题]如果一种物品的市场价格高于均衡价格,下列说法正确的是( ). [判断题]杜甫的"不为困穷宁有 ...

  3. 【Groovy】Groovy 脚本调用 ( Groovy 脚本中调用另外一个 Groovy 脚本 | 调用 evaluate 方法执行 Groovy 脚本 | 参数传递 )

    文章目录 一.Groovy 脚本中调用另外一个 Groovy 脚本 1.调用 evaluate 方法执行 Groovy 脚本 2.参数传递 二.完整代码示例 1.调用者 Groovy 脚本 2.被调用 ...

  4. 【Groovy】编译时元编程 ( 编译 ASTTransformation | 打包 ASTTransformation 字节码文件 | 编译 Groovy 类同进行编译时处理 )

    文章目录 一.编译 ASTTransformation 二.打包 ASTTransformation 字节码文件 三.编译 Groovy 类同进行编译时处理 一.编译 ASTTransformatio ...

  5. php编译成二进制文件_JVM字节码文件概述

    字节码文件概述 字节码文件的跨平台性 Java语言:跨平台的语言 当Java源代码成功编译字节码后,如果想在不同的平台上面运行,则无需再次编译 这个优势目前来说已经不再吸引人,因为Python.PHP ...

  6. 反编译工具的使用和字节码文件的查看(Binary Viewer)

    反编译工具的使用和字节码文件的查看 什么是反编译 反编译工具 链接: https://pan.baidu.com/s/15r-Qg5_wOhzO8fKRso3x8A 提取码: lmm7 –来自百度网盘 ...

  7. 【Groovy】Groovy 脚本调用 ( 命令行执行 Groovy 脚本并传入参数 | 获取 Groovy 脚本执行参数 )

    文章目录 前言 一. 命令行执行 Groovy 脚本并传入参数 二.获取 Groovy 脚本执行参数 前言 在 Groovy 脚本 , Groovy 类 , Java 类中 , 可以调用 Groovy ...

  8. jcreator把class字节码文件转成.java源文件_如何将.JAVA文件编译成.CLASS文件.说明方法和工具,或用JCreator如何操作?...

    http://www.newiter.com/showart.asp?id=33 由于比较长,建议点击上面链接进入继续浏览 对于很多应用系统,常常需要动态装载和执行类和代码片断,这有利于部署的简易性和 ...

  9. java中application后缀_编译JavaApplication源程序文件将产生相应的字节码文件,这些字节码文件的扩展名为...

    编译全球第一大消场是费市. 程序面"面从布局战略个全党和全严治"四是指. 同的些共学科了当课程在着重视重视重视重视国课革中个别趋势代世的一的是的_的培和知内容能力程改差异反映发展养 ...

最新文章

  1. OPPO和微软合作,开放“召唤小冰”
  2. C#选择目录对话框FolderBrowserDialog
  3. 篝火怎么做_上世纪的“Dyatlov事件”到底是怎么一回事儿,真是未知力量吗?...
  4. Spring Shedule Task之注解实现 (两次启动Schedule Task 的解决方案)
  5. HTML5获取地理位置定位信息
  6. Hadoop核心生态
  7. C# 调用Dll中非托管C++代码时,函数参数的类型对照
  8. 解决Eclipse中文乱码的问题
  9. 关于摄像头的UVC协议接口!
  10. 苹果手机屏幕突然放大恢复方法【图文教程】
  11. 免费高速的钉钉内网穿透——阿里出品必是精品(不限速,不限流量)
  12. 高手速成android开源项目[View篇]
  13. Sen2Cor对哨兵2号L1C数据的预处理
  14. 如何做好采购计划和库存管理?
  15. 疫情之后,教育的生死淘汰赛
  16. 非标准武术擂台机器人的设计思想——机械结构的设计思想
  17. Flutter实现天气查询App
  18. 信息系统项目管理--计算题笔记
  19. 任正非的胸怀和美国的狭隘
  20. php插入语句,请教关于php中sql插入语句的问题。

热门文章

  1. C语言 基础60题(5)
  2. 2014 I/O归来:Google连接一切
  3. 02. SQL表达式的灵活使用
  4. ubuntu mysql 安装
  5. 编写优秀Bug报告的艺术 ----转载自CSDN(imlogic的专栏)
  6. panel内嵌程序窗体
  7. python+pywinauto之PC端自动化一
  8. 【Python3_基础系列_009】Python3-条件语句-If
  9. 漫画算法:什么是一致性哈希?
  10. python学习--函数例子