`
kevincollins
  • 浏览: 55558 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

groovy笔记之二:groovy与java交互

阅读更多
Groovy脚本有两种调用方式:一是作为普通脚本文件(.groovy),使用Groovy提供的命令行groovy或者通过类groovy.lang.GroovyShell来调用;
二是作为普通的Java类文件(.class),用传统的方式来调用,这需要先使用groovyc把脚本文件编译成类文件,然后再使用java命令来调用。

在上一篇XXXX中,在eclipse中配置插件,运行的时候是使用第二种方式,因为会有自动编译的文件,如GTest.class, 在bin-groovy目录下。

本篇继续在eclipse中做测试。

目录结构:


groovy的编译后的class在bin-groovy下,在eclipse中构建路径设置输出GroovyJava/bin,java的class会编译到bin下。

先上代码,互相调用的部分都已经写好了。
有一个java 类和一个接口:
package com.kevin;

public interface IPerson
{
	public void say(String name);
}



package com.kevin;

import groovy.lang.GroovyClassLoader;

import java.io.File;
import java.io.IOException;

import org.codehaus.groovy.control.CompilationFailedException;
public class Person
{

	private String name;

	private int age;
	
	public Person()
	{
		
	}

	public Person(String name, int age)
	{
		this.age = age;
		this.name = name;
	}
	/**
	 * 此方法会在groovy中调用
	 */
	public void sayHello()
	{
		System.out.println("hello, my name is: " + name + " ,and age is:" + age);
	}
	/**
	 * 调用groovy中的方法
	 */
	private void foo()
	{
		try
		{
			ClassLoader cl = getClass().getClassLoader();
			GroovyClassLoader groovyCl = new GroovyClassLoader(cl);
			Class groovyClass = groovyCl.parseClass(new File("src/GPerson.groovy"));

			IPerson p = (IPerson) groovyClass.newInstance();

			p.say("LUCY");//调用GPerson.groovy实现接口IPerson的方法
		}
		catch (CompilationFailedException e)
		{
			e.printStackTrace();
		}
		catch (IOException e)
		{
			e.printStackTrace();
		}
		catch (InstantiationException e)
		{
			e.printStackTrace();
		}
		catch (IllegalAccessException e)
		{
			e.printStackTrace();
		}
	}
	
	public static void main(String[] args)
	{
		Person p = new Person();
		
		p.foo();
	}

}




接下来是GPerson.groovy
/**
 * @author Kevin
 *
 */
import com.kevin.IPerson;
import com.kevin.Person;

public class GPerson implements IPerson{

	//接口IPerson的具体实现,此方法会在java中调用
	public void say(String name){
		println "Hello, $name! ";
	}
	
	def foo(){
		Person p = new Person("TOM",45);
		p.sayHello();
	}
	
	static void main(args) {
		GPerson gp = new GPerson();
		//gp.say("JACK");
		
		gp.foo();
	}
}





在groovy中使用java:

在GPerson.groovy运行主方法,new了一个Person.java的实例,并调用了其中的sayHello()方法。
输出是: hello, my name is: TOM ,and age is:45


在java中调用groovy:
在Person.java 中运行main方法,在foo()中通过GroovyClassLoader获得GPerson的实例,并调用其中的say()方法。
输出是: Hello, LUCY!


当然也可以在groovy中使用现成的java类,比如spring的jar包。
把jar包丢进来,在classpath中包括进来,

用到的时候在头部来一句: import org.springframework.util.StringUtils;
跟在java中导入一样。

结束。


  • 大小: 22.7 KB
1
0
分享到:
评论

相关推荐

    groovy-3.0.9-API文档-中文版.zip

    标签:groovy、codehaus、jar包、java、中文文档; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用...

    groovy和Java相互调用1

    Groovy 调用 Java 类groovy 调用 Java class 十分方便,只需要在类前导入该 Java 类,在 Groovy 代码中就可以无缝使用该

    [Groovy] Making Java Groovy 英文版

    Making Java Groovy is a practical handbook for developers who want to blend Groovy into their day to day work with Java It starts by introducing the key differences between Java and Groovy and how you...

    Flutter 出现Could not download groovy-all.jar (org.codehaus.groovy:groovy-all:2.4.15)

    在一次代码拉取中,出现了以下问题:Could not download groovy-all.jar (org.codehaus.groovy:groovy-all:2.4.15) 详细的报错信息如下: // 报错信息如下 Could not resolve all files for configuration ':jcore-...

    Groovy+Java混合使用例子

    Groovy环境搭建教程中的例子工程,纯Java、纯Groovy以及Java+Groovy混合 教程参考:http://blog.csdn.net/rcom10002/archive/2011/06/26/6568557.aspx

    Groovy 学习笔记

    Groovy 学习笔记 Groovy 学习笔记

    Groovy学习笔记 PDF版

    Groovy

    groovy-2.5.1-API文档-中文版.zip

    赠送jar包:groovy-2.5.1.jar; 赠送原API文档:groovy-2.5.1-javadoc.jar; 赠送源代码:groovy-2.5.1-sources.jar; 赠送Maven依赖信息文件:groovy-2.5.1.pom; 包含翻译后的API文档:groovy-2.5.1-javadoc-API...

    Java调用Groovy,实时动态加载数据库groovy脚本

    Java调用Groovy,实时动态加载数据库groovy脚本,java读取mongoDB的groovy脚本,加载实时运行,热部署

    groovy-3.0.9-API文档-中英对照版.zip

    标签:groovy、codehaus、jar包、java、中英对照文档; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心...

    groovy-all-2.4.5-API文档-中文版.zip

    Maven坐标:org.codehaus.groovy:groovy-all:2.4.5; 标签:codehaus、groovy、all、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,...

    Java Groovy结合使用

    概述主要介绍Java、spring与groovy结合使用,高清英文版本

    Learning.Groovy.3.Java-Based.Dynamic.Scripting.2nd.Edition (英文版pdf)

    Start building powerful apps that take advantage of the dynamic scripting capabilities of the Groovy language, including what's new in Groovy version 3.0. This book covers Groovy fundamentals, such as...

    精通Groovy

    这一节将学习 Groovy 的基础知识:它是什么,它与 Java 语言和 JVM 的关系,以及编写 Groovy 代码的一些要点。 什么是 Groovy? Groovy 是 JVM 的一个替代语言 — 替代 是指可以用 Groovy 在 Java 平台上进行 Java ...

    Java中使用Groovy的三种方式

    Java中使用Groovy的三种方式,详细见我的博客。

    groovy-all-2.4.15.jar

    org.gradle.api.resources.ResourceException: Could not get resource '...下载groovy-all-2.4.15.jar后,放入对应的 android-studio/gradle/gradle-5.*/lib/目录。 重启 Android Studio 及可使用。

    groovy:Apache Groovy:用于JVM平台的功能强大的多面编程语言

    groovy:Apache Groovy:用于JVM平台的功能强大的多面编程语言

    groovy-all-2.4.12.jar

    最近的groovy-all-2.4.12.jar包供使用,解决as编译时报错问题

    groovy-all-2.4.15.jar.zip

    groovy-all-2.4.15.jar文件,MAC使用时需存放在/Users/用户名/.gradle/caches/jars-3/某一缓存目录下,找不到就都看一下,我遇到的问题是缓存目录中下载的是2.4.17版本,应该跟gradle版本升级有关

    java 动态脚本语言 精通 Groovy

    java 动态脚本语言 精通 Groovy

Global site tag (gtag.js) - Google Analytics