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

时间:2016-08-23 13:41:49

标签: java eclipse groovy

我有一个子项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));

}

修改 我的主脚本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 :(得分:0)

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

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);
                    }