[Py4j-users] Java lookup works for some methods but not others
Status: Beta
Brought to you by:
barthe
From: <ja...@ja...> - 2015-12-14 22:28:58
|
<html><body><span style="font-family:Verdana; color:#000000; font-size:10pt;"><div><span>I've coded in Java for a while now but I'm very new to Python - I'm trying to leverage some java libraries for use in the new project and I've hit a snag where some of the java methods are being found, and others aren't. I suspect this may have something to do with the argument types, which are handled differently in python. Here is an example of one of two methods - one which is found and one which isn't to show what I mean:</span></div><div><br></div><div><div><b>result = parsing_wrapper.compare_string_values("Cat","Dog","equal to")</b></div><div><b>print result</b></div></div><div><br></div><div><div><b>result = parsing_wrapper.compare_integer_values(10, 11, "equal to")</b></div><div><b>print result</b></div><div><br></div><div>These call the methods:</div><div><br></div><div><div><b> def compare_string_values(self, string1, string2, operand):</b></div><div><b> print "Comparing values"</b></div><div><b> returnval = self.gateway.entry_point.compareStringValues(string1, string2, operand)</b></div><div><b> return returnval</b></div></div><div><br></div><div><b> def compare_integer_values(self, int1, int2, operand):</b></div><div><b> print "Comparing values"</b></div><div><b> returnval = self.gateway.entry_point.compareIntegerValues(int1, int2, operand)</b></div><div><b> return returnval</b></div><div><br></div><div>...which attempt to look up the following methods inside the gateway:</div><div><br></div><div><b><span class="Apple-tab-span"> </span>public boolean compareIntegerValues(Integer int1, Integer int2, String operand)</b></div><div><b><span class="Apple-tab-span"> </span>{</b></div><div><b><span class="Apple-tab-span"> </span>boolean filtered = oInspectionToolkit.filterOnConditional(int1, int2, operand);</b></div><div><b><span class="Apple-tab-span"> </span>return filtered;</b></div><div><b><span class="Apple-tab-span"> </span>}</b></div></div><div><b><br></b></div><div><b><div><span class="Apple-tab-span"> </span>public boolean compareStringValues(String string1, String string2, String operand)</div><div><span class="Apple-tab-span"> </span>{</div><div><span class="Apple-tab-span"> </span>boolean filtered = oInspectionToolkit.filterOnConditional(string1, string2, operand);</div><div><span class="Apple-tab-span"> </span>return filtered;</div><div><span class="Apple-tab-span"> </span>}</div></b></div><div><b><br></b></div><div>The issue is that this works:</div><div><br></div><div><div><b>result = parsing_wrapper.compare_string_values("Cat","Dog","equal to")</b></div><div><b>print result</b></div></div><div><b><br></b></div><div><b>Comparing values</b></div><div><b>False</b></div><div><b><br></b></div><div>...but the integer comparison doesn't, because it fails to find the method:</div><div><br></div><div><div><b>result = parsing_wrapper.compare_integer_values(10, 11, "equal to")</b></div><div><b>print result</b></div></div><div><b><br></b></div><div><b><div>py4j.Py4JException: Method compareIntegerValues([class java.lang.Integer, class java.lang.Integer, class java.lang.String]) does not exist</div><div><span class="Apple-tab-span"> </span>at py4j.reflection.ReflectionEngine.getMethod(ReflectionEngine.java:335)</div><div><span class="Apple-tab-span"> </span>at py4j.reflection.ReflectionEngine.getMethod(ReflectionEngine.java:344)</div><div><span class="Apple-tab-span"> </span>at py4j.Gateway.invoke(Gateway.java:252)</div><div><span class="Apple-tab-span"> </span>at py4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:133)</div><div><span class="Apple-tab-span"> </span>at py4j.commands.CallCommand.execute(CallCommand.java:79)</div><div><span class="Apple-tab-span"> </span>at py4j.GatewayConnection.run(GatewayConnection.java:209)</div><div><span class="Apple-tab-span"> </span>at java.lang.Thread.run(Thread.java:745)</div><div><br></div></b></div><div>Does anyone have any suggestions as to where I might be going wrong? I feel like I'm missing something very simple but as I said I'm very new to python / py4j.</div><div><br></div><div>Thanks!</div><div style=""><br></div></span></body></html> |