В настоящее время я пробую Hazelcast Cloud, и мне нужно загрузить JAR-зависимости на серверы Hazelcast Cloud. У меня есть около 20 МБ для загрузки, загрузка кажется хорошей с помощью функции развертывания кода пользователя клиента, однако, как только загрузка завершится и я попытаюсь использовать классы, я получаю эту ошибку. Я использую и потоки Jet, и карты IMDG, наборы, списки и службу исполнителя. Некоторые функции, которые не поддерживаются в Hazelcast Cloud, или я что-то упустил? Я подумал, может быть, мне также нужно addClass
, а не addJar
при программном использовании функции развертывания кода клиента.
Вот код для добавления зависимости.
ClientUserCodeDeploymentConfig clientUserCodeDeploymentConfig =
new ClientUserCodeDeploymentConfig();
clientUserCodeDeploymentConfig.addJar("path to jar containing com.my.jarlibrary.SomeClass");
clientUserCodeDeploymentConfig.setEnabled(true);
ClientConfig config = new ClientConfig(); // Jet & Hazelcast config
config.setUserCodeDeploymentConfig(clientUserCodeDeploymentConfig);
// I also tried added the class after adding the jar which contains it,
// and same error comes up.
clientUserCodeDeploymentConfig.addClass(SomeClass.class);
Вот ошибка, которую я получаю:
java.util.concurrent.ExecutionException: com.hazelcast.client.UndefinedErrorCodeException:
Class name: java.lang.NoClassDefFoundError, Message: com/my/jarlibrary/SomeClass
at com.hazelcast.client.spi.impl.ClientInvocationFuture.resolveAndThrowIfException(ClientInvocationFuture.java:109)
at com.hazelcast.client.spi.impl.ClientInvocationFuture.resolveAndThrowIfException(ClientInvocationFuture.java:33)
at com.hazelcast.spi.impl.AbstractInvocationFuture.get(AbstractInvocationFuture.java:163)
at com.hazelcast.client.spi.impl.ClientUserCodeDeploymentService.deploy(ClientUserCodeDeploymentService.java:172)
at com.hazelcast.client.impl.clientside.HazelcastClientInstanceImpl.onClusterConnect(HazelcastClientInstanceImpl.java:444)
at com.hazelcast.client.connection.nio.ClusterConnectorServiceImpl.connectAsOwner(ClusterConnectorServiceImpl.java:150)
at com.hazelcast.client.connection.nio.ClusterConnectorServiceImpl.connectToCandidate(ClusterConnectorServiceImpl.java:252)
at com.hazelcast.client.connection.nio.ClusterConnectorServiceImpl.connectToClusterInternal(ClusterConnectorServiceImpl.java:192)
at com.hazelcast.client.connection.nio.ClusterConnectorServiceImpl.access$000(ClusterConnectorServiceImpl.java:62)
at com.hazelcast.client.connection.nio.ClusterConnectorServiceImpl$1.call(ClusterConnectorServiceImpl.java:279)
at com.hazelcast.client.connection.nio.ClusterConnectorServiceImpl$1.call(ClusterConnectorServiceImpl.java:275)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
at com.hazelcast.util.executor.HazelcastManagedThread.executeRun(HazelcastManagedThread.java:64)
at com.hazelcast.util.executor.HazelcastManagedThread.run(HazelcastManagedThread.java:80)
Caused by: com.hazelcast.client.UndefinedErrorCodeException: Class name: java.lang.NoClassDefFoundError, Message: com/my/jarlibrary/SomeClass
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
at java.lang.ClassLoader.defineClass(ClassLoader.java:642)
at com.hazelcast.internal.usercodedeployment.impl.ClassSource.define(ClassSource.java:50)
at com.hazelcast.internal.usercodedeployment.impl.ClassLocator.defineClassFromClient(ClassLocator.java:126)
at com.hazelcast.internal.usercodedeployment.UserCodeDeploymentService.defineClass(UserCodeDeploymentService.java:72)
at com.hazelcast.internal.usercodedeployment.impl.operation.DeployClassesOperation.run(DeployClassesOperation.java:50)
at com.hazelcast.spi.Operation.call(Operation.java:170)
at com.hazelcast.spi.impl.operationservice.impl.OperationRunnerImpl.call(OperationRunnerImpl.java:210)
at com.hazelcast.spi.impl.operationservice.impl.OperationRunnerImpl.run(OperationRunnerImpl.java:199)
at com.hazelcast.spi.impl.operationexecutor.impl.OperationExecutorImpl.run(OperationExecutorImpl.java:407)
at com.hazelcast.spi.impl.operationexecutor.impl.OperationExecutorImpl.runOrExecute(OperationExecutorImpl.java:434)
at com.hazelcast.spi.impl.operationservice.impl.Invocation.doInvokeLocal(Invocation.java:648)
at com.hazelcast.spi.impl.operationservice.impl.Invocation.doInvoke(Invocation.java:633)
at com.hazelcast.spi.impl.operationservice.impl.Invocation.invoke0(Invocation.java:592)
at com.hazelcast.spi.impl.operationservice.impl.Invocation.invoke(Invocation.java:256)
at com.hazelcast.spi.impl.operationservice.impl.InvocationBuilderImpl.invoke(InvocationBuilderImpl.java:61)
at com.hazelcast.client.impl.protocol.task.AbstractMultiTargetMessageTask.processMessage(AbstractMultiTargetMessageTask.java:57)
at com.hazelcast.client.impl.protocol.task.AbstractMessageTask.initializeAndProcessMessage(AbstractMessageTask.java:129)
at com.hazelcast.client.impl.protocol.task.AbstractMessageTask.run(AbstractMessageTask.java:109)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
at com.hazelcast.util.executor.HazelcastManagedThread.executeRun(HazelcastManagedThread.java:64)
at com.hazelcast.util.executor.HazelcastManagedThread.run(HazelcastManagedThread.java:80)
at ------ submitted from ------.(Unknown Source)
at com.hazelcast.spi.impl.operationservice.impl.InvocationFuture.resolve(InvocationFuture.java:126)
at com.hazelcast.spi.impl.AbstractInvocationFuture$1.run(AbstractInvocationFuture.java:251)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
at com.hazelcast.util.executor.HazelcastManagedThread.executeRun(HazelcastManagedThread.java:64)
at com.hazelcast.util.executor.HazelcastManagedThread.run(HazelcastManagedThread.java:80)
at ------ submitted from ------.(Unknown Source)
at com.hazelcast.client.spi.impl.ClientInvocationFuture.resolveAndThrowIfException(ClientInvocationFuture.java:96)
... 16 more)