Groovy не может разрешить класс в CloudHub

Возникают следующие ошибки для следующих сценариев в потоке Mule при запуске приложения в CloudHub. Когда я запускаю его в студии Anypoint, проблем нет.

Я проверил файл архива развернутого приложения и в папке классов есть скомпилированный класс company.cloudtools.util.Utilities. Я не уверен, почему сервер CloudHub не может найти файл класса, как определено ошибкой.

Ошибка:

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>

Класс коммунальных услуг:

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

person EdC    schedule 12.05.2015    source источник
comment
Бывает такое редко. Просто очистите проект несколько раз и передислокируйте в canhub. Какая версия мула.   -  person star    schedule 13.05.2015


Ответы (1)


Проблема в том, что CloudHub поддерживает только JRE 1.6 для версии Mule, которую я использую, Mule 3.5.0. Работники Mule версии 3.5.1 и выше используют поддерживаемую в настоящее время JRE 1.7. Пришлось изменить мои приложения JRE, чтобы заставить его работать.

В качестве более поздней задачи я узнаю, как заставить его работать с JRE 1.7 (вероятно, придется обновить среду выполнения до версии 3.5.1 или выше).

См. раздел «Технические вопросы/устранение неполадок» на веб-сайте Mulesoft — http://www.mulesoft.org/documentation/display/current/FAQ

person EdC    schedule 14.05.2015