Groovy не может разрешить класс в CloudHub
При запуске приложения в CloudHub у меня должны быть следующие ошибки для следующих сценариев в потоке Mule. Когда я запускаю его на Anypoint studio, проблем не возникает.
Я проверил файл архива развернутого приложения и в папке классов находится скомпилированный класс 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
Сценарий в потоке мула:
<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) {}
}
1 ответ
Проблема в том, что CloudHub поддерживает только JRE 1.6 для версии Mule, которую я использую, Mule 3.5.0. Работники мулов, которые выше 3.5.1, используют поддерживаемую в настоящее время JRE 1.7. Если бы мои приложения изменили JRE, чтобы оно заработало.
В качестве более поздней задачи я выясню, как заставить его работать с JRE 1.7 (возможно, придется обновить среду выполнения до 3.5.1 или выше).
См. Раздел "Технические вопросы / устранение неполадок" на Mulesoft - http://www.mulesoft.org/documentation/display/current/FAQ