首页 文章

将groovy文件从一个包导入另一个包中的另一个groovy文件

提问于
浏览
0

我有一个子java项目,它使用eclipse在classpath中添加了groovy文件 . 父java项目触发了child中的一些功能,它使用Groovy库来运行脚本 . 所以 import 在eclipse环境中使用打开的子项目工作正常但是如果我从命令行运行它或者如果我关闭子项目那么我在import语句中得到groovy编译错误 . 我该如何解决这个问题?我想避免使用 evaluate() 方法 .

以下是我的主人groovy:

package strides_business_script
abstract class Business_Script extends Script {
//some stuff
}

以下是另一个groovy:

import static strides_business_script.StridesBusiness_Script.*;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;

String Key = Part_Product_PartDetails
boolean containsData = checkIncomingMessage(Key)
if(containsData) {

    def edgeKeyList = [PPR]
    JSONArray partDetails = appendEdgeValueToMsg(edgeKeyList,Key,vertex,messageIterator);
    //deleteMessages(Key);
    JSONObject jsonObject = constructInfoWithPropertyJSON("NAME,PRODUCTTYPE,FGTYPE,UOM,ITEMCLASSIFICATIONBYMARKET");
    jsonObject.put("PARTS",partDetails);
    send(Product_AggPO_ProductDetails,convertJSONToString(jsonObject));

}

Edit: 我的主脚本 Business_Script.groovy 位于 scripts/strides_business_script/ 文件夹中 . 所有其他脚本都在 scripts/StridesComputationScripts/ 文件夹中,并导入 Business_Script.groovy . 我运行启用远程调试的应用程序,如下所示:

java -cp "./lib/*:./scripts/strides_business_script/Business_Script.groovy" -Xdebug -Xrunjdwp:transport=dt_socket,address=6969,server=y -Dhibernate.cfg.xml.path=./conf/hibernate.cfg.xml -Dlog4j.configuration=file:./conf/log4j.properties com.biglabs.dataExtractor.dataDump.DataDumpDriver 7

在这里,我试图解析所有的计算脚本 .

for (String scriptName : files) {
                        Script script = groovyShell.parse(new File(
                                SCRIPT_PLACED_AT + Constants.SLASH
                                        + SCRIPT_FILE_FOLDER + Constants.SLASH
                                        + scriptName));
                        scriptMping.put(scriptName, script);
                    }

在使用groovy shell解析时抛出异常:

org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
/home/manoj/strides/release/strides/scripts/StridesComputationScripts/PRODUCT-script.groovy: 2: unable to resolve class strides_business_script.StridesBusiness_Script
 @ line 2, column 1.
   import static strides_business_script.Business_Script.*;
   ^

/home/manoj/strides/release/strides/scripts/StridesComputationScripts/PRODUCT-script.groovy: 2: unable to resolve class strides_business_script.StridesBusiness_Script
 @ line 2, column 1.
   import static strides_business_script.Business_Script.*;
   ^

2 errors

1 回答

  • 0

    通过在comiler配置中添加脚本路径来修复它:

    CompilerConfiguration compilerConfiguration = new CompilerConfiguration();
    String path = SCRIPT_PLACED_AT;
    if(!SCRIPT_PLACED_AT.endsWith("/")){
                            path = path+ "/";
                        }
    compilerConfiguration.setClasspath(path);
    GroovyShell groovyShell = new GroovyShell(
                                compilerConfiguration);
    for (String scriptName : files) {
                            Script script = groovyShell.parse(new File(
                                    SCRIPT_PLACED_AT + Constants.SLASH
                                            + SCRIPT_FILE_FOLDER + Constants.SLASH
                                            + scriptName));
                            scriptMping.put(scriptName, script);
                        }
    

相关问题