MathGroup Archive 2008

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Sending Objects from Java - Mathematica

  • To: mathgroup at smc.vnet.net
  • Subject: [mg91048] Re: Sending Objects from Java - Mathematica
  • From: David Bailey <dave at Remove_Thisdbailey.co.uk>
  • Date: Mon, 4 Aug 2008 03:26:10 -0400 (EDT)
  • References: <g670pq$s5q$1@smc.vnet.net>

Jochen Adamek wrote:
> Dear Mathematica-experts,
> 
> i have written a Java-code, where i want to send some objects to
> Mathematica. To call a function(written in Mathematica) with four
> parameters under Java, i need to send objects to Mathematica.
> 
> This is my Java-code:
> 
> 
> public void sendListOfEdgesToMathematica(List<String> edg) throws
> MathLinkException {
> 		try { 
> 
> 		ml = MathLinkFactory.createKernelLink(argv);
> 			} catch (MathLinkException e) {
> 	        System.out.println("Fatal error opening link: " +
> e.getMessage());
> 	        return;
> 	        }
> 			
> 	        try {
> 		ml.enableObjectReferences();
> 		ml.discardAnswer();	                    
> ml.evaluate("<<C:\\Java\\AGG_Engine_Mathematica\\examples.nb");
> 		ml.discardAnswer();
> 		ml.putFunction("EvaluatePacket", 1);
> 		ml.putFunction("doGetEdges", 1);
> 		ml.put(edg);
>                 ml.endPacket();..............
> 
> edg( a list) contains the element "e11" and i have written a Function
> under Mathematica for receiving the object from Java:
> 
> 
> doGetEdges[edg_] := 
>  JavaBlock[Module[{outStream}, outStream = edg@getOutputStream[];
>    outStream@print["Edges"];
>    edgesG6 = edg
>    ]
>   ]
> 
> The problem is, Mathematica does not receive the correct value("e11").
> I tried to test my implementation with a PacketListener, but without
> success. After sending four objects to Mathematica, i want to call the
> Mathematica-function under Java:
> 
> "objectGraph[edgesG6, verticesG6, sourcesG6, targetsG6]"
> 
> Any help would be fantastic.
> 
> Best regards J.Adamek
> 
Unless you really need to work at such a low level, it is much easier to 
call

StdLink.getLink().evaluateToInputForm(str,0);

Where str is a string representation of the Mathematica function call 
you want to make. As for your code, I would need to be able to debug it 
to be sure, but I think the problem is that you need to explicitly 
generate the list using:

ml.putFunction("List", 1);

(followed by the 1 element of your list)

David Bailey
http://www.dbaileyconsultancy.co.uk



  • Prev by Date: Re: how to read such kind of list?
  • Next by Date: Re: help with "no more memory" at mathematica
  • Previous by thread: Re: how to read such kind of list?
  • Next by thread: Re: Manipulate with specified step size