【错误记录】Groovy工程中的文件查找策略 ( main 函数中需要使用 src/main/groovy/Script.groovy | Groovy 脚本直接使用代码相对路径 )
文章目錄
- 一、報錯信息
- 二、解決方案
一、報錯信息
在 Java 類中 , 調用 Groovy 腳本 , 出現如下錯誤 ;
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” 路徑 ;
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.BindingBinding 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 成員分析 ) 博客的源碼 ;
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的【错误记录】Groovy工程中的文件查找策略 ( main 函数中需要使用 src/main/groovy/Script.groovy | Groovy 脚本直接使用代码相对路径 )的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【错误记录】IntelliJ IDEA
- 下一篇: 【Groovy】Groovy 脚本调用