前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【错误记录】Groovy工程中的文件查找策略 ( main 函数中需要使用 src/main/groovy/Script.groovy | Groovy 脚本直接使用代码相对路径 )

【错误记录】Groovy工程中的文件查找策略 ( main 函数中需要使用 src/main/groovy/Script.groovy | Groovy 脚本直接使用代码相对路径 )

作者头像
韩曙亮
发布2023-03-30 10:30:39
2.4K0
发布2023-03-30 10:30:39
举报
文章被收录于专栏:韩曙亮的移动开发专栏

文章目录

一、报错信息


在 Java 类中 , 调用 Groovy 脚本 , 出现如下错误 ;

代码语言:javascript
复制
java.io.FileNotFoundException: Y:\002_WorkSpace\003_IDEA\Groovy_Demo\Script.groovy (Y:\002_WorkSpace\003_IDEA\Groovy_Demo\Script.groovy)
	at groovy.lang.GroovyCodeSource.<init>(GroovyCodeSource.java:108)
	at groovy.lang.GroovyShell.evaluate(GroovyShell.java:470)
	at JavaClass.startScript(JavaClass.java:17)
	at JavaClass.main(JavaClass.java:22)
在这里插入图片描述
在这里插入图片描述

二、解决方案


Groovy_Demo 是工程根目录名称 ;

这个错误本身很简单 , 但是涉及到 Java 与 Groovy 的路径查找机制的不同 ;

Java 类 JavaClass 位于 Groovy_Demo\src\main\groovy 目录下 , 要在该 Java 类中调用同目录的 Script.groovy 脚本 ;

此处必须使用完整的路径 “src/main/groovy/Script.groovy” , 才能查找到 “Script.groovy” 脚本 ;

Java 类中调用 Groovy 脚本 , 需要使用 “src/main/groovy/Script.groovy” 路径 ;

代码语言:javascript
复制
import groovy.lang.Binding;
import groovy.lang.GroovyShell;

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

public class JavaClass {
    public void startScript() throws IOException {
        // 注意这里创建 groovy.lang.Binding
        Binding binding = new Binding();
        // 设置 args 参数到 Binding 中的 variable 成员中
        binding.setVariable("args", new String[]{"arg0", "arg1"});

        // 执行 Groovy 脚本
        GroovyShell shell = new GroovyShell(JavaClass.class.getClassLoader(), binding);
        File file = new File("src/main/groovy/Script.groovy");
        shell.evaluate(file);
    }

    public static void main(String[] args) {
        try {
            new JavaClass().startScript();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

而在 Groovy 脚本中调用 另外一个 Groovy 脚本 , 如果两个 Groovy 脚本在同一个目录中 , 可以直接使用相对路径 " Script.groovy " 进行调用即可 ;

参考 【Groovy】Groovy 脚本调用 ( Groovy 脚本中调用另外一个 Groovy 脚本 | 绑定作用域 binding 变量分析 | Binding 类 variables 成员分析 ) 博客的源码 ;

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-01-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 一、报错信息
  • 二、解决方案
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档