java 调用groovy_Java调用Groovy脚本
在idea下,標(biāo)準(zhǔn)的Java maven項(xiàng)目中展示如何調(diào)用Groovy腳本和方法。
maven項(xiàng)目引進(jìn)Groovy lib
File -> Project Structure -> Global Libaries 添加下載好的Groovy下lib里面的jar包
調(diào)用Groovy腳本
首先,Java調(diào)用Groovy腳本需要該Groovy腳本里面有個(gè)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()
}
}
這個(gè)腳本的功能是解析一個(gè)網(wǎng)頁并將解析出來的數(shù)據(jù)封裝成Article對(duì)象,該Article可以是Java類也可以是Groovy類。然后在Java程序中調(diào)用該叫不能去解析網(wǎng)頁。
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();
}
}
}
調(diào)用Groovy類的方法
現(xiàn)在編寫一個(gè)Groovy類,該類的工作是解析一個(gè)網(wǎng)頁并將網(wǎng)頁內(nèi)容封裝成Article對(duì)象返回。
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程序中調(diào)用該類的解析網(wǎng)頁的方法。
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();
}
}
}
總結(jié)
以上是生活随笔為你收集整理的java 调用groovy_Java调用Groovy脚本的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Oracle 数据怎么实时同步到 Mon
- 下一篇: 基于Java+SpringBoot+vu