2014-01-31 2 views
3

Я использую скрипты java + groovy. Можно ли изменить это, сгенерированное именами groovy-класса (Script1.groovy, Script777.groovy и т. Д.)? Трудно найти правильный сценарий в случае исключения:/Groovy сгенерированное имя класса

Caused by: org.json.JSONException: JSONObject["value14"] not found. 
at org.json.JSONObject.get(JSONObject.java:498) 
at sun.reflect.GeneratedMethodAccessor9.invoke(Unknown Source) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:601) 
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90) 
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233) 
at org.codehaus.groovy.runtime.metaclass.MethodMetaProperty$GetMethodMetaProperty.getProperty(MethodMetaProperty.java:59) 
at org.codehaus.groovy.runtime.callsite.GetEffectivePojoPropertySite.getProperty(GetEffectivePojoPropertySite.java:61) 
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callGetProperty(AbstractCallSite.java:227) 
at Script4.run(Script4.groovy:23) 
at org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.eval(GroovyScriptEngineImpl.java:346) 
... 13 more 

ответ

3

Да, можно задать собственное имя для строчного скрипта. Вы должны использовать groovy.lang.GroovyClassLoader. Например:

GroovyClassLoader groovyClassLoader = new GroovyClassLoader(); 
Class<Script> parsedClass = groovyClassLoader.parseClass(scriptText, name); 
Script script = scriptClass.newInstance(); 
script.run() 
Смежные вопросы