2015-07-05 70 views
0

我一直在試圖用MPJExpress發送使用對象: -引起:mpi.MPIException:java.lang.ClassCastException:不能轉換爲[Ljava.lang.Object;

StateP randomState = HeuristicSolverUtility.createRandom(Constants.DIMENSION , Constants.w1); 

MPI.COMM_WORLD.Isend(randomState , 0 , 1 , MPI.OBJECT , 3 , Constants.STARTOPERATION); 

或者使用,從這個答案here,在這種形式

StateP[] stateArray = new StateP[1]; 
stateArray[0] = randomState; 
MPI.COMM_WORLD.Isend(stateArray , 0 , 1 , MPI.OBJECT , 3 , Constants.STARTOPERATION); 

我得到這個異常,當上述行代碼被執行: -

java.lang.reflect.InvocationTargetException 

Caused by: mpi.MPIException: mpi.MPIException: java.lang.ClassCastException: common.model.StateP cannot be cast to [Ljava.lang.Object; 
    at mpi.Comm$9.handleCompletion(Comm.java:1678) 

StateP類是可序列

public class StateP implements State , Serializable 
{ 

沒有接受的解決方案在這裏這個問題: - Send objects with MPJ express

和最投票回答沒有爲我工作。 我該如何糾正這一點,我做錯了什麼?

如果需要的話,這是我的MPJ.IReceive功能

StateP startingState = HeuristicSolverUtility.generateGoalState(Constants.DIMENSION, Constants.w1); 
     Request request = MPI.COMM_WORLD.Irecv(startingState, 0, 1, MPI.OBJECT, 0, Constants.STARTOPERATION); 
     request.Wait(); 
+0

你可以嘗試第二個回答該帖子嗎?這看起來像它應該解決你的問題。 – hugh

回答

0

試試看吧!

Object[] sendArr = new Object[1]; 
sendArr[0] = (Object) randomState; 
MPI.COMM_WORLD.Isend(sendArr , 0 , 1 , MPI.OBJECT , 3 , Constants.STARTOPERATION); 
相關問題