how directly call groovy class in java
如何在java中调用groovy的类.
java和groovy如何交互,传送数据.
类似: java 调用 python http://www.cnblogs.com/lmyhao/p/3363385.html
java调用groovy库的优势, 不需要在团队成员强制安装groovy解释器,groovyEclipse插件(自动编译groovy脚本).就能增强java本身处理文件系统,xml解析等的能力.
第一种是调用groovy官方库里的类
第二种是调用自己写的groovy文本的类.(copy并修改自csdn 老伯伯 的文章)
1. 第一种. 如果用maven的话
在pom的 依赖项里加入.
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-all</artifactId><version>2.2.2</version>
</dependency>
或者去官网下载grovvy的jar包,导入的eclipse的class依赖中.
就可以直接在java里调用 grovvy库里的类了.
( 如果Eclipse不会自动 import groovy的类,需要在.project中新增 <nature>org.eclipse.jdt.groovy.core.groovyNature</nature> )
import groovy.util.GroovyCollections;
import java.util.List;
public static void main(String[] args) {
List<Double> lists = new ArrayList<Double>();
lists.add(0.2);
lists.add(0.3);
lists.add(0.2);
Object sum = GroovyCollections.sum(lists);
System.out.println(sum);
}
====
2 第二种. 如果是自己写的groovy 文件.
假如如下 GrovvySystemConfigRead.groovy代码
-
- /**
- * Created by IntelliJ IDEA.
- * User: Web-03
- * Date: 11-4-21
- * Time: 下午3:43
- * To change this template use File | Settings | File Templates.
- */
- class GrovvySystemConfigRead {
- /*
- * 读取邮件验证访问路径, ConfigurationHolder是groovy框架grais里的某个类
- */
- static String getName(){
- return "csdn" ;
- }
- }
2.1 第一种调用,JAVA类(JavaClassCallGroovy)是可以直接调用GROOVY类(上面写好的SystemConfigRead)的。
(需要安装eclipse插件,自动把groovy文本文件编译为.class ,插件安装见
配置Groovy开发运行环境
http://blog.csdn.net/mousebaby808/article/details/7092031 or http://blog.csdn.net/fei33423/article/details/41685997 )
- public class JavaClassCallGroovy{
- public static void main(String[] args) {
- SystemConfigRead.getName();
- }
- }
2.2 第二种,以反射脚本化方式调用(不推荐),实现脚本化调用,即脚本改动后,无需编译,自动执行的目的.
这种反射化调用不仅可以用在java类调用groovy类,也可以用在java类调用java类,实现java的脚本化.
- /**
- * JAVA调用GROOVY
- * @throws IOException
- * @throws IllegalAccessException
- * @throws InstantiationException
- * 添加人:**
- * 添加时间:211-08-30 14:27
- */
- public void groovyToJava() throws IOException, IllegalAccessException, InstantiationException {
- ClassLoader parent = getClass().getClassLoader();
- GroovyClassLoader loader = new GroovyClassLoader(parent);
- //找到指定的groovy类
- Class groovyClass = loader.parseClass(new File("site/grails-app/utils/com/ingping/core/SystemConfigRead.groovy"));
- //将对象实例化并且强制转换为GroovyObject对象
- GroovyObject groovyObject = (GroovyObject) groovyClass.newInstance();
- //readEmailCodeUrl方法名,null 参数值,没有为null
- System.out.println("" + groovyObject.invokeMethod("readEmailCodeUrl", null));
- }