注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

阿弥陀佛

街树飘影未见尘 潭月潜水了无声 般若观照心空静...

 
 
 

日志

 
 
关于我

一直从事气象预报、服务建模实践应用。 注重气象物理场、实况场、地理信息、本体知识库、分布式气象内容管理系统建立。 对Barnes客观分析, 小波,计算神经网络、信任传播、贝叶斯推理、专家系统、网络本体语言有一定体会。 一直使用Java、Delphi、Prolog、SQL编程。

网易考拉推荐

Java 嵌入 groovy脚本  

2012-06-02 12:46:31|  分类: groovy|ruby |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |


embedding java

package groovytest
def run(foo) {
    println 'Hello World!'
    x = 123
    foo *= 10
    println foo
}
run (foo)

=======================================

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package groovytest;
import groovy.lang.Binding;
import groovy.lang.GroovyShell;
import java.io.File;

public class EmbedGroovy {

    private Binding binding = new Binding();

    public Object getProperty(String name) {
        return binding.getProperty(name);
    }

    public void setParameters(String[] paramNames, Object[] paramValues) {
        int len = paramNames.length;
        if (len != paramValues.length) {
            System.out.println("parameters not match!");
        }
        for (int i = 0; i < len; i++) {
            binding.setProperty(paramNames[i], paramValues[i]);
        }
    }

    public Object runScript(String scriptName) {
        GroovyShell shell = new GroovyShell(binding);
        try {
            return shell.evaluate(new File(scriptName));
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }

    public static void main(String[] args) {
        EmbedGroovy embedGroovy = new EmbedGroovy();
        String[] paramNames = {"foo"};
        Object[] paramValues = {new Integer(100)};
        embedGroovy.setParameters(paramNames, paramValues);
        Object result = embedGroovy.runScript("src/groovytest/script.groovy");
        System.out.println(result);
        System.out.println(embedGroovy.getProperty("foo"));
        //System.out.println(embedGroovy.getProperty("x"));
    }
}
============================================================

init:
Deleting: C:\my\java\GroovyTest\build\built-jar.properties
deps-jar:
Updating property file: C:\my\java\GroovyTest\build\built-jar.properties
Compiling 1 source file to C:\my\java\GroovyTest\build\classes
警告: 来自注释处理程序 'org.netbeans.modules.openide.modules.PatchedPublicProcessor' 的受支持 source 版本 'RELEASE_6' 低于 -source '1.7'
警告: 来自注释处理程序 'org.netbeans.modules.openide.util.ServiceProviderProcessor' 的受支持 source 版本 'RELEASE_6' 低于 -source '1.7'
警告: 来自注释处理程序 'org.netbeans.modules.openide.util.NbBundleProcessor' 的受支持 source 版本 'RELEASE_6' 低于 -source '1.7'
警告: 来自注释处理程序 'org.netbeans.modules.openide.util.URLStreamHandlerRegistrationProcessor' 的受支持 source 版本 'RELEASE_6' 低于 -source '1.7'
4 个警告
compile-single:
run-single:
Hello World!
1000
null
100
成功生成(总时间:1 秒)

=====================================================================

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package groovytest;

import groovy.lang.GroovyClassLoader;
import groovy.lang.GroovyObject;
import java.io.File;

/**
 *
 * @author hxfcalf
 */
public class DynamicGroovy {

    private GroovyObject groovyObject;

    public Object getProperty(String name) {
        return groovyObject.getProperty(name);
    }

    public Object invokeScriptMethod(String scriptName, String methodName, Object[] args) {
        ClassLoader parent = getClass().getClassLoader();
        GroovyClassLoader loader = new GroovyClassLoader(parent);
        try {
            Class groovyClass = loader.parseClass(new File(scriptName));
            groovyObject = (GroovyObject) groovyClass.newInstance();
            return groovyObject.invokeMethod(methodName, args);
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }

    public static void main(String[] args) {
        DynamicGroovy dynamicGroovy = new DynamicGroovy();
        Object[] params = {new Integer(2)};
        Object result = dynamicGroovy.invokeScriptMethod("src/groovytest/script.groovy", "run", params);
        System.out.println(result);
        System.out.println(dynamicGroovy.getProperty("x"));
    }
}
===================================================================================
init:
Deleting: C:\my\java\GroovyTest\build\built-jar.properties
deps-jar:
Updating property file: C:\my\java\GroovyTest\build\built-jar.properties
Compiling 1 source file to C:\my\java\GroovyTest\build\classes
警告: 来自注释处理程序 'org.netbeans.modules.openide.modules.PatchedPublicProcessor' 的受支持 source 版本 'RELEASE_6' 低于 -source '1.7'
警告: 来自注释处理程序 'org.netbeans.modules.openide.util.ServiceProviderProcessor' 的受支持 source 版本 'RELEASE_6' 低于 -source '1.7'
警告: 来自注释处理程序 'org.netbeans.modules.openide.util.NbBundleProcessor' 的受支持 source 版本 'RELEASE_6' 低于 -source '1.7'
警告: 来自注释处理程序 'org.netbeans.modules.openide.util.URLStreamHandlerRegistrationProcessor' 的受支持 source 版本 'RELEASE_6' 低于 -source '1.7'
4 个警告
compile-single:
run-single:
Hello World!
20
null
123
成功生成(总时间:1 秒)

  评论这张
 
阅读(1848)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017