Jinterface: communication between Java and Erlang using system file

Zabrane Mickael <>
Thu Mar 17 22:02:17 CET 2011


Hi guys,

Please, have a look to the following simple Java code
which try to encode a simple Erlang tuple and save it to disk.

-8-8-8-8-8-8-8-8-8-8 snip -8-8-8-8-8-8-8-8-8-8

// encode a simple Erlang tuple {ok, "Hello World"}
OtpErlangObject[] reply = new OtpErlangObject[2];
reply[0] = new OtpErlangAtom("ok");
reply[1] = new OtpErlangBinary("Hello World!");
OtpErlangTuple tuple = new OtpErlangTuple(reply);

// create an OtpOutputStream object from the binary
OtpErlangBinary binary = new OtpErlangBinary(tuple);
OtpOutputStream oos = new OtpOutputStream(binary);

oos.writeTo(fos);

// write the Erlang binary term to a file
File f = new File ("a.txt");
FileOutputStream fos = new FileOutputStream(f);

fos.flush();
fos.close();

-8-8-8-8-8-8-8-8-8-8 snip -8-8-8-8-8-8-8-8-8-8

When trying to read it from disk, I got an exception:
$ erl
1> {ok, Bin} = file:read_file("a.txt").
{ok,<<109,0,0,2,17,172,237,0,5,115,114,0,38,99,111,109,
      46,101,114,105,99,115,115,111,110,46,111,...>>}
2> binary_to_term(Bin).                
** exception error: bad argument
     in function  binary_to_term/1
        called as binary_to_term(<<109,0,0,2,17,172,237,0,5,115,114,0,38,99,111,109,46,
                                   101,114,105,99,115,115,111,110,46,111,116,...>>)


What am I doing wrong?
Help appreciated ...

Regards,
Zab



More information about the erlang-questions mailing list