工作流程任务failure.com.uber.cadence.internal.worker.WorkflowExecutionException:java.lang.IllegalAccessException

时间:2020-03-12 09:58:26

标签: cadence-workflow

我试图执行https://cadenceworkflow.io/docs/06_javaclient/01_quick_start中提供的Cadence java客户端示例,并在使用CLI启动工作流程时得到以下异常

09:45:02.123 [Workflow Executor taskList="HelloWorldTaskList", domain="test-domain": 1] ERROR  c.u.c.i.r.ReplayDecisionTaskHandler - Workflow task failure. startedEventId=3, WorkflowID=34e36721-641b-40fc-bbf7-37e9ae7afd92, RunID=845af22f-d982-4794-b5f2-ba6821755a04. If see continuously the workflow might be stuck.
java.lang.Error: com.uber.cadence.internal.worker.WorkflowExecutionException: java.lang.IllegalAccessException
    at com.uber.cadence.internal.sync.POJOWorkflowImplementationFactory$POJOWorkflowImplementation.execute(POJOWorkflowImplementationFactory.java:239) ~[cadence-client-2.6.3.jar:na]
    at com.uber.cadence.internal.sync.WorkflowRunnable.run(WorkflowRunnable.java:46) ~[cadence-client-2.6.3.jar:na]
    at com.uber.cadence.internal.sync.CancellationScopeImpl.run(CancellationScopeImpl.java:102) ~[cadence-client-2.6.3.jar:na]
    at com.uber.cadence.internal.sync.WorkflowThreadImpl$RunnableWrapper.run(WorkflowThreadImpl.java:85) ~[cadence-client-2.6.3.jar:na]
    at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) ~[na:na]
    at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[na:na]
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) ~[na:na]
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) ~[na:na]
    at java.base/java.lang.Thread.run(Thread.java:834) ~[na:na]
Caused by: com.uber.cadence.internal.worker.WorkflowExecutionException: java.lang.IllegalAccessException
    at com.uber.cadence.internal.sync.POJOWorkflowImplementationFactory.mapToWorkflowExecutionException(POJOWorkflowImplementationFactory.java:356) ~[cadence-client-2.6.3.jar:na]
    ... 9 common frames omitted
9:49

有人可以让我知道如何解决它吗?

1 个答案:

答案 0 :(得分:2)

我只是遇到了同样的问题。

第一段示例代码在public界面上缺少HelloWorld访问修饰符。将接口设置为public之后,我可以毫无问题地运行示例。

代码应如下所示:

import com.uber.cadence.workflow.Workflow;
import com.uber.cadence.workflow.WorkflowMethod;
import org.slf4j.Logger;

public class GettingStarted {

    private static Logger logger = Workflow.getLogger(GettingStarted.class);

    public interface HelloWorld {
        @WorkflowMethod
        void sayHello(String name);
    }

}