groovy与javah互相调用
暂时只找到这几种方法。groovy代码方便灵活。常用来写一些工具。一般都是java加入groovy代码
第一种 java中加入 groovy代码就是
Toy.groovy
class Toy{
def p(arg) {
arg.each{
println it
}
}
}
GroovyClassLoader gcl = new GroovyClassLoader();
Class greetingClass = null;
try { greetingClass = gcl.parseClass(new File("Toy.groovy"));
} catch (IOException e) {
e.printStackTrace();
} GroovyObject hello = (GroovyObject) new Toy();
String[] a={"a","b","c"};
Object[] agr={a};
hello.invokeMethod("p",agr) ;
另一种就是将groovy的代码打包成jar ,和java打包类似 ,就可以当成java代码那样打包,然后加到java 项目的classpath中这样执行
GroovyObject hello = (GroovyObject) new Toy();
String[] a={"a","b","c"};
Object[] agr={a};
hello.invokeMethod("p",agr) ;
groovy中引入java代码同上类似。就是将java代码打包后加入到 java 项目的classpath中
例如 app2是一个javal类
public class App2 {
public void p1() {
System.out.println("hello world");
}
}
在groovy中引入
def te = new App2()
te.p1()
注意使用groovy时把groovy的jar包引入java项目中
groovy与javah互相调用的更多相关文章
- Groovy小结:java调用Groovy方法并传递参数
Groovy小结:java调用Groovy方法并传递参数 @(JAVA总结) 1. 场景描述 在网上查了资料发现,java有三种方式调用groovy脚本.但是真正在实际的服务器环境中,嵌入groovy ...
- Java动态调用脚本语言Groovy
Java动态调用脚本语言Groovy 2019-05-15 目录 0. pom.xml添加依赖1. 使用GroovyShell计算表达式2. 使用GroovyScriptEngine脚本引擎加载Gro ...
- Groovy和Java互调
Scala和Java为静态语言,Groovy为动态语言 Scala: 函数式编程,同时支持面向对象 Groovy: jvm上的脚本,较好兼容java语法,Groovy加强了Java集成. 可配置化的优 ...
- Groovy实现代码热载的机制和原理
前言: 真的很久没在博客园上更新博客了, 现在趁这段空闲的时间, 对之前接触的一些工程知识做下总结. 先来讲下借用Groovy如何来实现代码的热载, 以及其中涉及到的原理和需要注意的点. 总的来说, ...
- 少一些套路,多一些真诚 ——groovy消灭表现层套路
初次认识groovy是在2009年,当时看了Manning出版的<Groovy in Action 1st Edition>,对groovy这个语言的交互性shell,以及灵活的语法留 ...
- groovy脚本语言基础1
一 搭建groovy环境 安装JDK [root@node1 ~]# yum -y install java-11-openjdk 官网下载groovySDK下载 https://groovy.ap ...
- Gradle学习系列之三——读懂Gradle语法
在本系列的上篇文章中,我们讲到了创建Task的多种方法,在本篇文章中,我们将学习如何读懂Gradle. 请通过以下方式下载本系列文章的Github示例代码: git clone https://git ...
- groovy-语句
groovy语句类似于java语句,但是在groovy中的分号”;”是可选的.比如: 1 def x = [1, 2, 3] 2 println x 3 def y = 5; def x = y + ...
- Gradle学习
Gradle是一种构建工具,它抛弃了基于XML的构建脚本,取而代之的是采用一种基于Groovy的内部领域特定语言.近期,Gradle获得了极大的关注,这也是我决定去研究Gradle的原因. 这篇文章是 ...
随机推荐
- java多线程的操作
上篇博客简单了介绍了Java的多线程的概念,与进程的区别,两种创建方式,状态及获取线程名称等内容.这篇文章接着介绍Java的多线程.主要从一下几方面介绍. 1 线程类的常用方法 1.1 start() ...
- UltraEdit 回车符替换空格
查找和替换 输入 ^r^n 替换为:(空格)
- jQuery插件扩展extend的实现原理
相信每位前端的小伙伴对jQuery都不陌生吧,它最大的魅力之一就是有大量的插件,去帮助我们更轻松的实现各种功能. 前几天晚上,闲来无事,就自己动手写了个简单的jQuery插件,功能很简单,只是让选定的 ...
- HackOne
使用 weight 属性实现视图的居中显示 一.在开发中有时候会遇到将一个控件在父控件居中显示.但是如果你直接用margin_*来进行限制的话就可能造成对于不同的型号的手机又不同显示的格式. 所以就可 ...
- DateType--字符类型
--=====================================================字符集 ASCII (American Standard Code for Informa ...
- angular 输出属性
import { Component, OnInit, EventEmitter, Output } from '@angular/core'; @Component({ selector: 'app ...
- 数组中 reduce累计运算
let arr = [1,2,3,4]; let sum = (a, b) => a + b; arr.reduce(sum, 0); 最后输出10
- 多线程《五》GIL全局解释器锁
一 引子 定义: In CPython, the global interpreter lock, or GIL, is a mutex that prevents multiple native t ...
- 深度剖析MQTT协议的整个通信流程
http://www.elecfans.com/d/587483.html MQTT,目前物联网的最主要的协议,基本所有收费的云平台都是基于MQTT协议,比如机智云,和所有的开放云平台比如中国移动的o ...
- docker 自定义镜像
step1:自定义镜像 原镜像 registry.aspider.avlyun.org/library/php-apache docker run -d --name xz_apache regist ...