2016-11-20 4 views
-2

Hazelcastを初めて使用しています。私は順番に値(文字列キー)としてカスタムJavaオブジェクトを格納するIMapの分散クエリを使用しようとしています。データを地図に追加することはスムーズですが、データがケーキであっても、述語を使用しようとすると、この美しいメッセージが表示されます。hazelcast分散クエリはHazelcastSerializationExceptionを返します

INFO:hz.client_0 [dev] [3.7.2 にjava.lang.ClassNotFoundException:com.test.hazel.Customer com.hazelcastで - ] HazelcastClient 3.7.2(20161004 540b01c)はスレッド "メイン" com.hazelcast.nio.serialization.HazelcastSerializationExceptionでCLIENT_CONNECTED例外です。 (JavaSerializer.java:224) ( )com.hazelcast.internal.serialization.impl.StreamSerializerAdapter.read(StreamSerializerAdapter.java:46) でcom.hazelcast.internal.serialization.impl.AbstractSerializationService.toObject(AbstractSerializationService.java:172) でcom.hazelcast.query.impl.CachedQueryEntry.getValue(CachedQueryEntry.java:70) com.hazelcastで com.hazelcast.query.impl.QueryableEntry.getAttributeValueで.query.impl.CachedQueryEntry.getTargetObject com.hazelcast.query.impl.QueryableEntry.extractAttributeValue(QueryableEntry.java:81)で(CachedQueryEntry.java:103) (QueryableEntry.java:48) at com.hazelcast.query.impl.predicates.AbstractPredicate.readAttributeValue(AbstractPredicate.java:130) at com.hazelcast.query.impl.predicates.AbstractPredicate.apply(AbstractPredicate.java:55) でcom.hazelcast.query.impl.predicates.AndPredicate.apply(AndPredicate.java:116) com.hazelcastで com.hazelcast.map.implで.map.impl.query.MapQueryEngineImpl.queryTheLocalPartition com.hazelcast.map.impl.query.MapQueryEngineImpl.querySequential(MapQueryEngineImpl.java:251)で(MapQueryEngineImpl.java:349) com.hazelcasで.query.MapQueryEngineImpl.queryUsingFullTableScan com.hazelcast.map.impl.query.MapQueryEngineImpl.querySafelyUsingFullTableScan(MapQueryEngineImpl.java:218)で(MapQueryEngineImpl.java:240) com.hazelcast.spiでt.map.impl.query.MapQueryEngineImpl.queryLocalPartitions(MapQueryEngineImpl.java:133) でcom.hazelcast.map.impl.query.QueryOperation.run(QueryOperation.java:51) 。 com.hazelcast.spiでimpl.operationservice.impl.OperationRunnerImpl.run(OperationRunnerImpl.java:181) でcom.hazelcast.spi.impl.operationexecutor.impl.OperationExecutorImpl.run(OperationExecutorImpl.java:375) 。 com.hazelcast.spiでimpl.operationexecutor.impl.OperationExecutorImpl.runOrExecute(OperationExecutorImpl.java:402) でcom.hazelcast.spi.impl.operationservice.impl.Invocation.doInvokeLocal(Invocation.java:283) 。 impl.oper com.hazelcast.spi.implでationservice.impl.Invocation.doInvoke(Invocation.java:268) でcom.hazelcast.spi.impl.operationservice.impl.Invocation.invoke0(Invocation.java:232) 。 com.hazelcast.client.implでoperationservice.impl.Invocation.invoke(Invocation.java:207) でcom.hazelcast.spi.impl.operationservice.impl.InvocationBuilderImpl.invoke(InvocationBuilderImpl.java:59) 。 protocol.task.map.AbstractMapQueryMessageTask.createInvocations(AbstractMapQueryMessageTask。Javaの:109) com.hazelcast.client.impl.protocol.task.map.AbstractMapQueryMessageTaskで com.hazelcast.client.impl.protocol.task.map.AbstractMapQueryMessageTask.invokeOnMembers(AbstractMapQueryMessageTask.java:90) で。 com.hazelcast.client.impl.protocol.task.AbstractCallableMessageTask.processMessage(AbstractCallableMessageTask.java:35)で(AbstractMapQueryMessageTask.java:79) でcom.hazelcast.client.impl.protocol.task.AbstractMessageTaskを呼び出します。 initializeAndProcessMessage(AbstractMessageTask.java:119) at com.hazelcast.client.impl.protocol.task.AbstractMessageTask.run(AbstractMessageTask.java:99) at java.util.co ncurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) でjava.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:617) java.lang.Thread.run(Thread.java:745)at com.hazelcast.util.executor.HazelcastManagedThread.executeRun(HazelcastManagedThread.java:76) でcom.hazelcast.util.executor.HazelcastManagedThread.run(HazelcastManagedThread.java:92) ------から提出で------。(Unknown Source)at com.hazelcast.spi.impl.operationservice.impl.InvocationFuture.resolve(InvocationFuture.java:111) at com.hazelcast.spi.impl.operationservice.impl。 InvocationFuture.resolveAndThrow(InvocationFuture.java:74) の com.hazelcast.spi.impl.AbstractInvocationFuture.get(AbstractInvocationFuture.java:150) com.hazelcast.client.impl.protocol.task.map.AbstractMapQueryMessageTask.collectResults(AbstractMapQueryMessageTask.java:122)で で コム.hazelcast.client.impl.protocol.task.map.AbstractMapQueryMessageTask.invokeOnMembers(AbstractMapQueryMessageTask.java:91) at com.hazelcast.client.impl.protocol.task.map.AbstractMapQueryMessageTask.call(AbstractMapQueryMessageTask.java:79) でcom.hazelcast.client.impl.protocol.task.AbstractCallableMessageTask.processMessage(AbstractCallableMessageTask.java:35) com.hazelcast.client.impl.protocol.task.AbstractMessageTask.iでnitializeAndProcessMessage(AbstractMessageTask.java:119) でcom.hazelcast.client.impl.protocol.task.AbstractMessageTask.run(AbstractMessageTask.java:99) java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.javaで: 1142) com.hazelcast.util.executor.HazelcastManagedThreadでjava.lang.Thread.run(Thread.java:745)で java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:617) で.executeRun(HazelcastManagedThread.java:76) at com.hazelcast.util.executor.HazelcastManagedThread.run(HazelcastManagedThread.java:92) ------から送信------(不明なソース)at com.hazelca st.client.spi.impl.ClientInvocationFuture.resolveAndThrow com.hazelcast.client.spi.impl.ClientInvocationFuture.resolveAndThrow(ClientInvocationFuture.java:30)で(ClientInvocationFuture.java:74) com.hazelcast.spiで 。 impl.AbstractInvocationFuture.get(AbstractInvocationFuture.java:158) com.hazelcast.client.spi.ClientProxy.invoke(ClientProxy.java:171) at com.hazelcast.client.proxy.ClientMapProxy.values(ClientMapProxy.java :1180) com.test.hazel.SqlQueryMember.main(SqlQueryMember.java:33) によって: でjava.lang.ClassNotFoundExceptionが発生しました。com.hazelcast.client.impl.protocol.ClientExceptionFactory $ 12.createException(ClientExceptionFactory。ジャワ:170) でcom.hazelcast.client.impl.protocol.ClientExceptionFactory.createException(ClientExceptionFactory.java:622) com.hazelcast.client.impl.protocol.ClientExceptionFactory.createException(ClientExceptionFactory.java:589)で com.hazelcast.client.spi.impl.ClientInvocationServiceSupport $ ResponseThread.processで com.hazelcast.client.spi.impl.ClientInvocationServiceSupport $ ResponseThread.handleClientMessage(ClientInvocationServiceSupport.java:331) で (ClientInvocationServiceSupport.java:313) at com.hazelcast.client.spi.impl.ClientInvocationServiceSupport $ ResponseThread.doRun(ClientInvocationServiceSupport.java:306) at com.hazelcast.client.spi.impl.ClientInvocationServiceSupport $ ResponseThread.run(ClientInvocationServiceSupport.java:283)

ここに私の傑作です:

public static void main(String[] args) { 
    ClientConfig clientConfig = new ClientConfig(); 
    List<String> addList = new ArrayList<>(); 
    addList.add("iii.cnt.tll.uu:5701"); 

    clientConfig.setAddresses(addList); 

    HazelcastInstance hz = HazelcastClient.newHazelcastClient(clientConfig); 


    IMap<String, Customer> map = hz.getMap("map"); 

    map.put("1", new Customer("peter", true, 36)); 
    map.put("2", new Customer("john", false, 40)); 
    map.put("3", new Customer("roger", true, 20)); 

    Set<Customer> employees = (Set<Customer>) map.values(new SqlPredicate("active AND age < 30")); 
    System.out.println("Employees: " + employees); 

    Hazelcast.shutdownAll(); 
} 

そして、私の複雑なDTO:

public class Customer implements Serializable { 
    private final String id = UUID.randomUUID().toString(); 

    private String name; 
    private boolean active; 
    private int age; 

    Customer(String name, boolean active, int age) { 
     this.active = active; 
     this.age = age; 
     this.name = name; 
    } 

    @Override 
    public String toString() { 
     return "Customer{" 
       + "active=" + active 
       + ", id='" + id + '\'' 
       + ", name='" + name + '\'' 
       + ", age=" + age 
       + '}'; 
    } 
} 

私は3.7.2 'Hazelcast'リリースを使用しています。そして、はい、私はこれらのクラスをサーバーノード上のクラスパス上にあるJar内に持っています。

答えて

1

解決策が見つかりました。私はクラスパスを環境変数ではなくstart.batファイルに追加することになっています。ありがとうございました

関連する問題