Unable to resolve class from Groovy script

415 views
Skip to first unread message

Neil Gordon

unread,
Feb 19, 2014, 2:30:14 AM2/19/14
to idem...@googlegroups.com
Hello,

Is it possible to reference custom model classes (PO's) that are located in my plugin, from a Groovy script?

I get an error 'Unable to resolve class' referring to my model classes when starting a Groovy script from my plugin.

References to classes which are in org.adempiere.base do not trigger an error.

I start the Groovy script from within my plugin as follows:

            //Adapted from: ProcessUtil.startScriptProcess

            ScriptEngine engine = rule.getScriptEngine();

            MRule.setContext(engine, getCtx(), 0); // no window

            // now add the method arguments to the engine
            engine.put("A_Ctx", getCtx());
            engine.put("A_TrxName", getTrxName());
            msg = engine.eval(rule.getScript()).toString();

Part of the stack trace is as follows:

Script1.groovy: 23: unable to resolve class org.compiere.model.MCustomTable
 @ line 23, column 1.
   import org.compiere.model.MCustomTable
   ^

    at com.sun.script.groovy.GroovyScriptEngine.eval(GroovyScriptEngine.java:87)
    at javax.script.AbstractScriptEngine.eval(AbstractScriptEngine.java:247)
    at my.package.MyScriptStarter.runScript(MyScriptStarter.java:77)
    at my.package.MyScriptStarter.process(MyScriptStarter.java:40)
    ..
    at org.compiere.process.SvrProcess.process(SvrProcess.java:176)
    at org.compiere.process.SvrProcess.startProcess(SvrProcess.java:122)
    at org.adempiere.util.ProcessUtil.startJavaProcess(ProcessUtil.java:172)
    at org.compiere.apps.AbstractProcessCtl.startProcess(AbstractProcessCtl.java:466)
    at org.compiere.apps.AbstractProcessCtl.run(AbstractProcessCtl.java:234)
    at org.adempiere.webui.apps.WProcessCtl.process(WProcessCtl.java:158)
    at org.adempiere.webui.apps.ProcessDialog$ProcessDialogRunnable.doRun(ProcessDialog.java:852)
    at org.adempiere.util.ContextRunnable.run(ContextRunnable.java:38)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:439)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
    at java.util.concurrent.FutureTask.run(FutureTask.java:138)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:98)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:206)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
    at java.lang.Thread.run(Thread.java:662)
Caused by: org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
Script1.groovy: 23: unable to resolve class org.compiere.model.MCustomTable
 @ line 23, column 1.
   import org.compiere.model.MCustomTable

Any help would be appreciated.

Neil

Reply all
Reply to author
Forward
0 new messages