java 调用groovy_Java调用Groovy脚本

在idea下,标准的Java maven项目中展示如何调用Groovy脚本和方法。

maven项目引进Groovy lib

File -> Project Structure -> Global Libaries 添加下载好的Groovy下lib里面的jar包

调用Groovy脚本

首先,Java调用Groovy脚本需要该Groovy脚本里面有个main方法,用于传参

import org.apache.commons.lang.StringUtils

import org.jsoup.Jsoup

import org.jsoup.nodes.Document

static void main(String[] args) {

try {

def html = args[0]

Document document = Jsoup.parse(html)

def title = document.getElementsByTag("title").first().text()

def content = document.select("#kw").html()

def article = new Article()

article.setTitle(title)

article.setContent(content)

print(article.toString())

} catch (Exception e) {

e.printStackTrace()

}

}

这个脚本的功能是解析一个网页并将解析出来的数据封装成Article对象,该Article可以是Java类也可以是Groovy类。然后在Java程序中调用该叫不能去解析网页。

import com.x.script.groovy.Article;

import groovy.lang.*;

import org.apache.commons.io.IOUtils;

import java.io.File;

import java.io.FileInputStream;

public class App {

public static void main( String[] args ) {

try {

String html = IOUtils.toString(new FileInputStream(new File("C:\\Users\\linsf\\Desktop\\baidu.html")));

Binding binding = new Binding(new String[]{html});

GroovyShell shell = new GroovyShell(binding);

shell.evaluate(new File("C:\\Users\\linsf\\Desktop\\html_parser.groovy"));

} catch (Exception e) {

e.printStackTrace();

}

}

}

调用Groovy类的方法

现在编写一个Groovy类,该类的工作是解析一个网页并将网页内容封装成Article对象返回。

import org.jsoup.Jsoup

import org.jsoup.nodes.Document

class BaiduParser {

Article parse(html, count) {

print(count)

try {

Document document = Jsoup.parse(html)

def title = document.getElementsByTag("title").first().text()

def content = document.select("#kw").html()

def article = new Article()

article.setTitle(title)

article.setContent(content)

return article

} catch (Exception e) {

e.printStackTrace()

}

return null

}

}

然后在Java程序中调用该类的解析网页的方法。

import com.x.script.groovy.Article;

import groovy.lang.*;

import org.apache.commons.io.IOUtils;

import java.io.File;

import java.io.FileInputStream;

public class App {

public static void main( String[] args ) {

try {

String html = IOUtils.toString(new FileInputStream(new File("C:\\Users\\linsf\\Desktop\\baidu.html")));

GroovyClassLoader loader= new GroovyClassLoader();

Class fileCreator =loader.parseClass(new File("F:\\x-demo\\src\\main\\java\\com\\x\\script\\groovy\\BaiduParser.groovy"));

GroovyObject object =(GroovyObject) fileCreator.newInstance();

System.out.println("--" + object.invokeMethod("parse", new Object[]{html, 1}));

} catch (Exception e) {

e.printStackTrace();

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值