I'm interested in connecting new Java programs with legacy programs written in C and Fortran using MPI (so that they are machine independent and parallel). To try this out at first, I was hoping to simply Send arrays of basic datatypes (integer, floats, etc.) from a Java program to a simple C or Fortran program. So, I put together a simple example, but am unable to Send or Receive anything (the program just freezes... I'm guessing it freezes at the MPI_Send and MPI_Recv calls). What am I doing wrong (see code below)?

Java program - interopj.java (sending program):
import mpi.*;
public class interopj
    public static void main(String args[])
        int rank = MPI.COMM_WORLD.Rank();
        int size = MPI.COMM_WORLD.Size();

        int offset = 0, cnt = 1;
        int buf[] = new int[cnt];
        for (int i = 1; i < size; i++)
            buf[0] = i;
            System.out.println("Sending " + i);
            MPI.COMM_WORLD.Send(buf, offset, cnt, MPI.INT, i, 0);
    catch (Exception e)
        catch(Exception ex)

C program - interop.c (receiving program): 
#include "mpi.h"
int main(int argc, char *argv[])
  int rank, size;
  int i, bsize;
  MPI_Status status;

  MPI_Init(&argc, &argv);
  MPI_Comm_rank(MPI_COMM_WORLD, &rank);
  MPI_Comm_size(MPI_COMM_WORLD, &size);

  bsize = 1; 
  int buf[bsize];
  printf("Waiting for an integer");
  MPI_Recv(&buf, 1, MPI_INT, 0, 0, MPI_COMM_WORLD, &status);
  printf("Received %d", buf[0]);

  return 0;

CC = mpicc
JCC = mpijavac
LIB = /usr/local/lib

all: interop interopj

interop: interop.c
    $(CC) -o interop interop.c

interopj: interopj.java
    $(JCC) -cp $(LIB)/mpi.jar interopj.java

Shell file to run a test:
echo Building
make -B
echo Running
mpirun -np 1 java interopj : -np 2 interop

Thanks for your help in advance,