Groovy 无法在 CloudHub 中解析 class

Groovy unable to resolve class in CloudHub

当我 运行 CloudHub 中的应用程序时,Mule 流中的以下脚本出现以下错误。当我 运行 它在 Anypoint studio 上时,没有任何问题。

我检查了部署的应用程序归档文件,在 classes 文件夹中是编译的 company.cloudtools.util.Utilities class。我不确定为什么 CloudHub 服务器无法找到错误定义的 class 文件。

错误:

org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
Script16.groovy: 1: unable to resolve class company.cloudtools.util.Utilities
 @ line 1, column 1.
   import company.cloudtools.util.Utilities
   ^

1 error

    at org.codehaus.groovy.control.ErrorCollector.failIfErrors(ErrorCollector.java:302)
    at org.codehaus.groovy.control.CompilationUnit.applyToSourceUnits(CompilationUnit.java:858)
    at org.codehaus.groovy.control.CompilationUnit.doPhaseOperation(CompilationUnit.java:548)
    at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:497)
    at groovy.lang.GroovyClassLoader.doParseClass(GroovyClassLoader.java:306)
    at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:287)
    at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:267)
    at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:214)
    at org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.getScriptClass(GroovyScriptEngin

Mule 流中的脚本:

<scripting:transformer doc:name="parse record type">
                    <scripting:script engine="Groovy"><![CDATA[import company.cloudtools.util.Utilities
        import com.netsuite.webservices.platform.core.types.RecordType
        import org.mule.module.netsuite.RecordTypeEnum

        // flowVars[ns_record_type] is used for the "get-record" operation
        flowVars["ns_record_type"] = Utilities.findRecordType(payload["ns_record_type"], Arrays.asList(RecordType.values()), 0)
        // flowVars[ns_record_type_enum] is used for the "update record" operation?
        flowVars["ns_record_type_enum"] = Utilities.findRecordTypeEnum(payload["ns_record_type"], Arrays.asList(RecordTypeEnum.values()), 0)

        return payload]]></scripting:script>
                </scripting:transformer>

实用程序Class:

package company.cloudtools.util;

import com.netsuite.webservices.platform.core.types.RecordType;
import org.mule.module.netsuite.RecordTypeEnum;
import java.util.*;

public class Utilities {

    //initial call... findRecordType("downloaditem", RecordType.values(), 0)
    public static RecordType findRecordType(String bad_name, List<RecordType> available_enums, Integer current_character) {}

    //initial call... findRecordTypeEnum("downloaditem", RecordTypeEnum.values(), 0)
    public static RecordTypeEnum findRecordTypeEnum(String bad_name, List<RecordTypeEnum> available_enums, Integer current_character) {}
}

问题是对于我使用的 Mule 版本 Mule 3.5.0,CloudHub 仅支持 JRE 1.6。 3.5.1 以上的 Mule worker 使用当前支持的 JRE 1.7。更改了我的应用程序 JRE 以使其正常工作。

作为稍后的任务,我将找出如何使其与 JRE 1.7 一起工作(可能必须将运行环境更新到 3.5.1 或更高版本)。

请参阅 Mulesoft 的技术/疑难解答部分 - http://www.mulesoft.org/documentation/display/current/FAQ