py4j-users Mailing List for Py4J
Status: Beta
Brought to you by:
barthe
You can subscribe to this list here.
2009 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(1) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2010 |
Jan
|
Feb
(1) |
Mar
|
Apr
(1) |
May
|
Jun
|
Jul
|
Aug
|
Sep
(1) |
Oct
(1) |
Nov
|
Dec
|
2011 |
Jan
(6) |
Feb
(1) |
Mar
(8) |
Apr
(6) |
May
|
Jun
(1) |
Jul
|
Aug
|
Sep
|
Oct
(4) |
Nov
|
Dec
(4) |
2012 |
Jan
|
Feb
|
Mar
(5) |
Apr
|
May
(7) |
Jun
(9) |
Jul
(10) |
Aug
|
Sep
|
Oct
(6) |
Nov
|
Dec
|
2013 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
(2) |
Jul
|
Aug
|
Sep
(3) |
Oct
|
Nov
|
Dec
(1) |
2014 |
Jan
(3) |
Feb
|
Mar
(3) |
Apr
|
May
(5) |
Jun
|
Jul
(2) |
Aug
(3) |
Sep
|
Oct
(1) |
Nov
|
Dec
(21) |
2015 |
Jan
(2) |
Feb
(5) |
Mar
(4) |
Apr
|
May
|
Jun
(5) |
Jul
(12) |
Aug
|
Sep
(1) |
Oct
(3) |
Nov
(1) |
Dec
(1) |
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> |
From: Alex G. <ale...@ne...> - 2015-11-07 20:24:02
|
The following code: import logging from py4j.java_gatewayimport launch_gateway, JavaGateway, GatewayParameters logging.basicConfig(level=logging.DEBUG) port = launch_gateway() params = GatewayParameters(port=port,eager_load=True) gw = JavaGateway(gateway_parameters=params) gw.shutdown() Produces the following: DEBUG:py4j.java_gateway:Exception while shutting down a socket Traceback (most recent call last): File "/home/alex/virtualenv/asphalt/lib/python3.4/site-packages/py4j/java_gateway.py", line 301, in quiet_shutdown socket_instance.shutdown(socket.SHUT_RDWR) OSError: [Errno 9] Bad file descriptor INFO:py4j.java_gateway:Exception while shutting down callback server Traceback (most recent call last): File "/home/alex/virtualenv/asphalt/lib/python3.4/site-packages/py4j/java_gateway.py", line 1428, in shutdown_callback_server self._callback_server.shutdown() AttributeError: 'NoneType' object has no attribute 'shutdown' DEBUG:py4j.java_gateway:Exception while closing Traceback (most recent call last): File "/home/alex/virtualenv/asphalt/lib/python3.4/site-packages/py4j/java_gateway.py", line 290, in quiet_close closable.close() AttributeError: 'NoneType' object has no attribute 'close' Why is this happening? |
From: sudheera N. <sud...@gm...> - 2015-10-17 03:14:16
|
Hi I am trying to use py4j to call python method from java. I was successful in calling java methods from python. But I need to initiate the call from java side as java is my main program and I want to interface a power system simulation software called PowerFactory to java via python, (python provide nice interface to handle the PowerFactory ) . So, When I try to call the python from java I get following error. ERROR:py4j.java_gateway:Unknown command runPowerFactory Traceback (most recent call last): File "<stdin>", line 1, in <module> File "C:\Python33\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py", line 685, in runfile execfile(filename, namespace) File "C:\Python33\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py", line 85, in execfile exec(compile(open(filename, 'rb').read(), filename, 'exec'), namespace) File "C:/Program Files (x86)/DIgSILENT/PowerFactory 15.1/python/PhdTheses_extClass.py", line 44, in <module> abc = toFromjava_ex.CollectDemandData(toFromjava1) File "C:\Python33\lib\site-packages\py4j\java_gateway.py", line 813, in __call__ answer, self.gateway_client, self.target_id, self.name) File "C:\Python33\lib\site-packages\py4j\protocol.py", line 308, in get_return_value format(target_id, ".", name), value) py4j.protocol.Py4JJavaError: An error occurred while calling o7.CollectDemandData. : py4j.Py4JException: An exception was raised by the Python Proxy. Return Message: x at py4j.Protocol.getReturnValue(Protocol.java:434) at py4j.reflection.PythonProxyHandler.invoke(PythonProxyHandler.java:113) at com.sun.proxy.$Proxy0.runPowerFactory(Unknown Source) at repastextrun.JavaPyCall.CollectDemandData(JavaPyCall.java:10) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at py4j.reflection.MethodInvoker.invoke(MethodInvoker.java:231) at py4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:381) at py4j.Gateway.invoke(Gateway.java:259) at py4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:133) at py4j.commands.CallCommand.execute(CallCommand.java:79) at py4j.GatewayConnection.run(GatewayConnection.java:209) at java.lang.Thread.run(Unknown Source) +++++++++++++++++++++++++++++++++++++++++++++++++++ My java Interface looks like package repastextrun; public interface javaPyCallInt { public void runPowerFactory(); } +++++++++++++++++++++++++++++++++++++++++++++++++ And the java class that I'm calling python looks like package repastextrun; import java.io.IOException; import py4j.GatewayServer; public class JavaPyCall { public void CollectDemandData(javaPyCallInt javaInt) throws IOException{ javaInt.runPowerFactory(); System.out.println(javaInt); } public static void main(String[] args) { GatewayServer server = new GatewayServer(new JavaPyCall()); server.start(); } } -- Sudheera Navaratne |
From: sudheera N. <sud...@gm...> - 2015-10-02 21:43:51
|
Hi I need to pass a list of list , ex. [["A","B"],[1,2],[3,4]] to a java program from python using Py4j and want to collect it from java side to a String[][] array. I can pass a simple list but list of list gives me following error. ======================================================= DIgSI/err - Python Script 'PhdThesesPy' stopped at error Traceback (most recent call last): File "<string>", line 20, in <module> File "C:\Program Files (x86)\DIgSILENT\PowerFactory 15.1\python\PhdTheses.py", line 84, in <module> repastCall_Demand(DemandData) File "C:\Program Files (x86)\DIgSILENT\PowerFactory 15.1\python\PhdTheses.py", line 69, in repastCall_Demand wd.setDemandFromPF(java_DemandData) File "C:\Python33\lib\site-packages\py4j\java_gateway.py", line 804, in __call__ [get_command_part(arg, self.pool) for arg in new_args]) File "C:\Python33\lib\site-packages\py4j\java_gateway.py", line 804, in <listcomp> [get_command_part(arg, self.pool) for arg in new_args]) File "C:\Python33\lib\site-packages\py4j\protocol.py", line 278, in get_command_part command_part = REFERENCE_TYPE + parameter._get_object_id() AttributeError: 'list' object has no attribute '_get_object_id' =========================================================== Thsanks -- Sudheera Navaratne |
From: sudheera N. <sud...@gm...> - 2015-10-02 15:05:04
|
Hi I need to pass a list of list , ex. [["A","B"],[1,2],[3,4]] to a java program from python using Py4j and want to collect it from java side to a String[][] array. I can pass a simple list but list of list gives me following error. ======================================================= DIgSI/err - Python Script 'PhdThesesPy' stopped at error Traceback (most recent call last): File "<string>", line 20, in <module> File "C:\Program Files (x86)\DIgSILENT\PowerFactory 15.1\python\PhdTheses.py", line 84, in <module> repastCall_Demand(DemandData) File "C:\Program Files (x86)\DIgSILENT\PowerFactory 15.1\python\PhdTheses.py", line 69, in repastCall_Demand wd.setDemandFromPF(java_DemandData) File "C:\Python33\lib\site-packages\py4j\java_gateway.py", line 804, in __call__ [get_command_part(arg, self.pool) for arg in new_args]) File "C:\Python33\lib\site-packages\py4j\java_gateway.py", line 804, in <listcomp> [get_command_part(arg, self.pool) for arg in new_args]) File "C:\Python33\lib\site-packages\py4j\protocol.py", line 278, in get_command_part command_part = REFERENCE_TYPE + parameter._get_object_id() AttributeError: 'list' object has no attribute '_get_object_id' =========================================================== Thsanks -- Sudheera Navaratne |
From: Barthelemy D. <bar...@in...> - 2015-09-03 23:35:10
|
Hi Py4J users, In the last years, I received several requests on GitHub or on my private email to implement difficult or niche features or to provide commercial support. I’m happy to announce that the company that I work for, Resulto, has agreed to provide professional services for Py4J. This means that (1) if you want a feature to be implemented quickly, (2) a special license that comes with support, or (3) custom integration with your code, you can hire Resulto to do the job. I, Barthelemy, **will not stop** developing Py4J for free, quite the opposite. It’s just that I don’t have the time to invest on large or niche features that require uninterrupted hours of R&D/thinking. In the end, this should greatly benefit Py4J users because new features will be introduced in the codebase and bugs will inevitably be fixed along the way. If you are interested in professional services for Py4J, please get in touch with us at py...@re.... Short FAQ about this offer: 1. Will you stop supporting Py4J or implementing features for free? No. I’ll continue with exactly the same schedule: intense bursts of open source activity followed by answering bug reports and merging pull requests only. If you want a complex feature to be implemented and I don’t have the time on my personal time, you are welcome to implement it and make a pull request. 2. If I hire Resulto to implement a feature, how does the copyrights and licensing work? Unless the feature integrates with a proprietary part of your system, we prefer to make the work open source following Py4J’s implicit contributor agreement [0]. 3. Who is Resulto? We are a small software development company [1] that started more than a year ago. Our main product is a personalized marketing/customer retention platform, LoyalAction [2]. We also offer professional services to build custom platforms and infrastructure [3]. If you hire Resulto to work on Py4J, I’ll likely lead the effort, but other developers may also participate. As a bonus, we are located in Canada, so our currency is extremely cheap these days :-D Do not hesitate to contact me (personal: bar...@in..., work: py...@re...) if you have more questions or if you are interested in the services Resulto can provide. [0] https://www.py4j.org/contributing.html#license-and-copyrights [1] http://www.resulto.ca/en/ [2] http://www.loyalaction.com/en/ [3] http://www.resulto.ca/en/services/ P.S. Py4J moved from SourceForge and the mailing list is now hosted by Google Groups: https://groups.google.com/a/py4j.org/forum/#!forum/py4j/join |
From: Barthelemy D. <bar...@in...> - 2015-07-26 12:10:58
|
Py4J 0.9 has just been released on pypi and maven central. This is a backward-compatible release with many features and bugfixes: - Python side: constructor parameters have been deprecated in favor of GatewayParameters and CallbackServerParameters. This was necessary because the number of configuration options is growing fast. Old parameters will be supported until Py4J 1.0 (at least two more minor versions). - Python side: IDEs and interactive interpreters such as IPython can now get help text/autocompletion for Java classes, objects, and members. This makes Py4J an ideal tool to explore complex Java APIs (e.g., the Eclipse API). Thanks to @jonahkichwacoders - Python side: the callback gateway server (necessary for Java to call back Python functions) can be daemonized and can be started after the main JavaGateway is started. - Python side: py4j.java_gateway.launch_gateway has now a cleaner implementation that discards stdout and stderr output by default. It is also possible to redirect the output from these channels to separate files, deques, or queues. Thanks to @davidcsterratt for finding the root cause and work on the fix. - It is now possible to install Py4J from git with pip: pip install git+ https://github.com/bartdag/py4j.git. This has been working for some time but was never officially announced before. - The Eclipse components of Py4J have been moved to another repository. Existing forks and pull requests can still use the @before-eclipse-split branch until Py4J reaches 1.0. Fixes won’t be backported to this branch, but pull requests will be merged by the main maintainer to @master if requested. - Major cleanup of Python source code to make it fully flake8 (pep8 + pyflakes) compliant. This should be easier to contribute now. - Major test cleanup effort to make Python tests more reliable. Testing Py4J is difficult because there are many versions of Python and Java to test and Python 2.6 lacks many interesting test features. Effort to make tests even more robust will continue in the next milestone. - We introduced a contributing guide and an implicit contributor license agreement (https://www.py4j.org/contributing.html) that indicates that anyone contributing to Py4J keeps the copyright of the contribution but gives a non-revokable right to license the code using Py4J’s license (3-clause BSD). The copyright statement has been changed to “Copyright (c) 2009-2015, Barthelemy Dagenais and individual contributors. All rights reserved.” to make it clear that individual contributors retain copyrights of their contributions. An AUTHORS.txt file has been added to the repository to keep track of contributors: if your name is not in the file and you have contributed to Py4J, do not hesitate to write on the mailing list or open a pull request. - Cleaned up the doc that was referring to broken links or refactored classes. Long-time users may want to review the advanced topics page. - Added support for Python Wheels. - We have a new website: https://www.py4j.org - We have a new blog: https://blog.py4j.org - Eclipse features have moved to: http://eclipse.py4j.org - We have a new mailing list: https://groups.google.com/a/py4j.org/forum/#!forum/py4j/join - github 0.9 milestone: https://github.com/bartdag/py4j/issues?q=is%3Aissue+milestone%3A0.9+is%3Aclosed If you see any backward-incomptable changes, do not hesitate to fill a bug report (https://github.com/bartdag/py4j/issues/new). This release has been made possible by the generous contributions from many users. Every bug reports, patches, pull requests, ideas or help on the mailing list (thanks @agronholm) is greatly appreciated. This is the last message I will post about Py4J on this mailing list. Please register to the new mailing list: https://groups.google.com/a/py4j.org/forum/#!forum/py4j/join Barthelemy |
From: Barthelemy D. <bar...@in...> - 2015-07-26 11:01:26
|
Hi, I want to inform you that Py4J is moving far away from SourceForge. Their behavior with accounts takeover and installer modifications is highly questionable to say the least. Moreover, the recent outage, almost a full week without website and mailing list access, makes me worry about the longevity of the platform. For those who are not aware of the issues, just read a few of the stories indexed by HN Search: https://hn.algolia.com/?query=sourceforge&sort=byPopularity&prefix&page=0&dateRange=all&type=story - The Py4J website is now hosted at https://www.py4j.org - The Mailing List is now hosted on Google Groups: https://groups.google.com/a/py4j.org/forum/#!forum/py4j/join or py...@py... - The Py4J development blog is now at hosted at https://blog.py4j.org/ Members of the current mailing list will be invited to join the new mailing list, so check your SPAM folder in case it does not find its way through your inbox. Questions will only be answered on the new mailing list, but I will keep the archive up on SourceForge as long as possible for the sake of transparency. I'll also make the release announcement on both mailing lists. Google Groups was not my first choice, but I could not find a free alternative that offered public archive and provided decent deliverability. Although it's not obvious, you can register to a google group without a Google account. The link I provide everywhere on the website and in this email is a shortcut to join the mailing list without any email address. If you have any questions, do not hesitate to write on the new mailing list or to contact me at barthelemy at infobart dot com Barthelemy |
From: Barthelemy D. <bar...@in...> - 2015-07-16 09:05:14
|
I'll probably be able to speed up the transfer of a byte arrays between Java and Python by just passing the length of the byte array and the actual bytes through the socket connection between the JVM and the Python process. Currently, these bytes are converted to and from BASE64 which slows everything but keeps the protocol easier to work with. I'm not sure if this will help your use case though. Does the BoofCV library accepts byte[]? Is it possible/desirable to transform your numpy structure into a byte array? We could use memory mapped files to exchange data between the two processes, but support in Python is tricky because you need to know in advance if you are on UNIX or Windows. I'm not even sure that it would be faster than just transferring everything through the socket connection. Barthelemy On Wed, Jul 15, 2015 at 8:33 PM Peter <dih...@gm...> wrote: > I know this is a known/fundamental issue, but just wanted place my request > for a faster way to convert large arrays between the two. I'm written a > wrapper around BoofCV, which is a computer vision library in Java, using > Py4J. For the most part it has been really easy to do and works well. The > one major problem I have is that loading an image in python then passing it > to Java is glacial. > > For example, when tracking objects inside a video sequence it takes 28ms > to process the image, but 95ms to convert it from a numpy format into the > BoofCV format! Kinda kills any hope of doing something in real-time. Yes > I know you said not to use this library if you want speed, but it's > actually almost there. > > Would it be possible to do some sort of hackery like share a large chunk > of memory between the two and use that to do copies? > > - Peter > > ------------------------------------------------------------------------------ > Don't Limit Your Business. Reach for the Cloud. > GigeNET's Cloud Solutions provide you with the tools and support that > you need to offload your IT needs and focus on growing your business. > Configured For All Businesses. Start Your Cloud Today. > https://www.gigenetcloud.com/ > _______________________________________________ > Py4j-users mailing list > Py4...@li... > https://lists.sourceforge.net/lists/listinfo/py4j-users > |
From: Barthelemy D. <bar...@in...> - 2015-07-16 08:54:16
|
You can always use reflection: aClass = gateway.jvm.Class.forName("java.lang.Integer") But I agree that .class would be handy for JavaClass objects on the Python side. Please do not hesitate to fill a feature request ( https://github.com/bartdag/py4j/issues/new) Barthelemy On Wed, Jul 15, 2015 at 8:18 PM Peter A <pet...@gm...> wrote: > Hi, > > I need to access the static member "class" in a Java object. For example > in Java the code would look something like: > > if( object.getClass() == Object.class ) { > // do something > } > > Now when I try that in py4j I run into issues that "class" is a protected > keyword. So the following causes it to crash: > > gateway.jvm.Object.class > > On the other hand gateway.jvm.Object.variable works just fine, assuming variable is a static member variable of Object. > > My current hack around this issue is to create a new instance of the object then call object.getClass() in python. > > Is there anyway to access "class" in python? > > - Peter > > > -- > "Now, now my good man, this is no time for making enemies." — Voltaire > (1694-1778), on his deathbed in response to a priest asking that he > renounce Satan. > > ------------------------------------------------------------------------------ > Don't Limit Your Business. Reach for the Cloud. > GigeNET's Cloud Solutions provide you with the tools and support that > you need to offload your IT needs and focus on growing your business. > Configured For All Businesses. Start Your Cloud Today. > https://www.gigenetcloud.com/ > _______________________________________________ > Py4j-users mailing list > Py4...@li... > https://lists.sourceforge.net/lists/listinfo/py4j-users > |
From: Peter A <pet...@gm...> - 2015-07-16 04:40:43
|
Just tried that fix and realized I stated the question in correctly. What I got is a Java function like: void stuff( Class type ) { .... } A python function which converts an int into the appropriate class. I then invoke Java function. So it looks something like this in Python: gateway.jvm.foo.Bar.stuff( lookup_type( a ) ) def lookup_type( type ): if type == 0: return THE APPROPRIATE JAVA CLASS ... For now what I'm doing is: if type == 0: obj = gateway.jvm.the.Object() return obj,getClass() this seems to be a bit clunky. On Wed, Jul 15, 2015 at 8:58 PM, Alex Grönholm <ale...@ne...> wrote: > The .class is a kludge to access the actual class in Java. In Python, > simply leave out the ".class". > > if object.getClass() == Object: > # do something > > > 16.07.2015, 03:18, Peter A kirjoitti: > > Hi, > > I need to access the static member "class" in a Java object. For example > in Java the code would look something like: > > if( object.getClass() == Object.class ) { > // do something > } > > Now when I try that in py4j I run into issues that "class" is a > protected keyword. So the following causes it to crash: > > gateway.jvm.Object.class > > > On the other hand gateway.jvm.Object.variable works just fine, assuming variable is a static member variable of Object. > > My current hack around this issue is to create a new instance of the object then call object.getClass() in python. > > > Is there anyway to access "class" in python? > > > - Peter > > > -- > "Now, now my good man, this is no time for making enemies." — Voltaire > (1694-1778), on his deathbed in response to a priest asking that he > renounce Satan. > > > ------------------------------------------------------------------------------ > Don't Limit Your Business. Reach for the Cloud. > GigeNET's Cloud Solutions provide you with the tools and support that > you need to offload your IT needs and focus on growing your business. > Configured For All Businesses. Start Your Cloud Today.https://www.gigenetcloud.com/ > > > > _______________________________________________ > Py4j-users mailing lis...@li...https://lists.sourceforge.net/lists/listinfo/py4j-users > > > > > ------------------------------------------------------------------------------ > Don't Limit Your Business. Reach for the Cloud. > GigeNET's Cloud Solutions provide you with the tools and support that > you need to offload your IT needs and focus on growing your business. > Configured For All Businesses. Start Your Cloud Today. > https://www.gigenetcloud.com/ > _______________________________________________ > Py4j-users mailing list > Py4...@li... > https://lists.sourceforge.net/lists/listinfo/py4j-users > > -- "Now, now my good man, this is no time for making enemies." — Voltaire (1694-1778), on his deathbed in response to a priest asking that he renounce Satan. |
From: Alex G. <ale...@ne...> - 2015-07-16 04:20:38
|
The .class is a kludge to access the actual class in Java. In Python, simply leave out the ".class". if object.getClass() == Object: # do something 16.07.2015, 03:18, Peter A kirjoitti: > Hi, > > I need to access the static member "class" in a Java object. For > example in Java the code would look something like: > > if( object.getClass() == Object.class ) { > // do something > } > > Now when I try that in py4j I run into issues that "class" is a > protected keyword. So the following causes it to crash: > > gateway.jvm.Object.class > > On the other handgateway.jvm.Object.variable works just fine, assuming variable is a static member variable of Object. > My current hack around this issue is to create a new instance of the object then call object.getClass() in python. > > Is there anyway to access "class" in python? > > - Peter > > -- > "Now, now my good man, this is no time for making enemies." — > Voltaire (1694-1778), on his deathbed in response to a priest asking > that he renounce Satan. > > > ------------------------------------------------------------------------------ > Don't Limit Your Business. Reach for the Cloud. > GigeNET's Cloud Solutions provide you with the tools and support that > you need to offload your IT needs and focus on growing your business. > Configured For All Businesses. Start Your Cloud Today. > https://www.gigenetcloud.com/ > > > _______________________________________________ > Py4j-users mailing list > Py4...@li... > https://lists.sourceforge.net/lists/listinfo/py4j-users |
From: Peter <dih...@gm...> - 2015-07-16 00:34:01
|
I know this is a known/fundamental issue, but just wanted place my request for a faster way to convert large arrays between the two. I'm written a wrapper around BoofCV, which is a computer vision library in Java, using Py4J. For the most part it has been really easy to do and works well. The one major problem I have is that loading an image in python then passing it to Java is glacial. For example, when tracking objects inside a video sequence it takes 28ms to process the image, but 95ms to convert it from a numpy format into the BoofCV format! Kinda kills any hope of doing something in real-time. Yes I know you said not to use this library if you want speed, but it's actually almost there. Would it be possible to do some sort of hackery like share a large chunk of memory between the two and use that to do copies? - Peter |
From: Peter A <pet...@gm...> - 2015-07-16 00:18:40
|
Hi, I need to access the static member "class" in a Java object. For example in Java the code would look something like: if( object.getClass() == Object.class ) { // do something } Now when I try that in py4j I run into issues that "class" is a protected keyword. So the following causes it to crash: gateway.jvm.Object.class On the other hand gateway.jvm.Object.variable works just fine, assuming variable is a static member variable of Object. My current hack around this issue is to create a new instance of the object then call object.getClass() in python. Is there anyway to access "class" in python? - Peter -- "Now, now my good man, this is no time for making enemies." — Voltaire (1694-1778), on his deathbed in response to a priest asking that he renounce Satan. |
From: Dan O'R. <ore...@gm...> - 2015-07-15 16:17:27
|
Thanks for the quick response, Barthelemy! For now I'll pursue the shim route, but I'll keep an eye out of #163 to be resolved. On Tue, Jul 14, 2015 at 8:25 PM Barthelemy Dagenais <bar...@in...> wrote: > After some investigation, there is no easy or quick solution because of > the difference in the type systems and the autoboxing behavior of Java. > From a design perspective, I'm pretty sure converting primitives such as > short to Python int is saner than trying to track the original primitive > type. Preventing primitive wrapper (such as Byte and Short) from being > converted to Python int though makes a lot of sense, but requires a few non > trivial changes. > > It's doable and I have a plan, but it won't be available before a few > weeks, so your best bet on the short term is to rely on a Java shim or a > third party library. > > Link to Github issue for reference: > https://github.com/bartdag/py4j/issues/163 > > Barthelemy > > On Tue, Jul 14, 2015 at 2:26 PM Dan O'Reilly <ore...@gm...> wrote: > >> It seems that on the Python side, Py4J will automatically convert the >> java type short (and byte) to the Python type int, which means there's no >> way to pass a List<short> from Python to Java. Consider this example: >> >> import java.util.List; >> >> import py4j.GatewayServer; >> >> class Test { >> >> public void testByte(List<Byte> l) { >> Byte i = l.get(0); >> } >> >> public static void main(String[] args) { >> GatewayServer gw = new GatewayServer(new Test()); >> gw.start(); >> System.out.println("GatewayServer started..."); >> } >> } >> >> If I try to call testByte from the Python side, I seem to get an >> ClassCastException no matter what I try: >> >> >>> gw = JavaGateway() >> >>> z = ListConverter().convert([1,2], gw._gateway_client) >> >>> gw.entry_point.testByte(z) >> Traceback (most recent call last): >> File "<stdin>", line 1, in <module> >> File "/usr/local/lib/python2.7/dist-packages/py4j/java_gateway.py", >> line 538, in __call__ >> self.target_id, self.name) >> File "/usr/local/lib/python2.7/dist-packages/py4j/protocol.py", line >> 300, in get_return_value >> format(target_id, '.', name), value) >> py4j.protocol.Py4JJavaError: An error occurred while calling t.testByte. >> : java.lang.ClassCastException: java.lang.Integer cannot be cast to >> java.lang.Byte >> at Test.testByte(Test.java:8) >> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) >> at >> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) >> at >> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) >> at java.lang.reflect.Method.invoke(Method.java:497) >> at py4j.reflection.MethodInvoker.invoke(MethodInvoker.java:231) >> at py4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:379) >> at py4j.Gateway.invoke(Gateway.java:259) >> at py4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:133) >> at py4j.commands.CallCommand.execute(CallCommand.java:79) >> at py4j.GatewayConnection.run(GatewayConnection.java:207) >> at java.lang.Thread.run(Thread.java:745) >> >> >> >>> z = >> ListConverter().convert([gw.jvm.java.lang.Byte(1),gw.jvm.java.lang.Byte(2)], >> gw._gateway_client) >> >>> gw.entry_point.testByte(z) >> Traceback (most recent call last): >> File "<stdin>", line 1, in <module> >> File "/usr/local/lib/python2.7/dist-packages/py4j/java_gateway.py", >> line 538, in __call__ >> self.target_id, self.name) >> File "/usr/local/lib/python2.7/dist-packages/py4j/protocol.py", line >> 300, in get_return_value >> format(target_id, '.', name), value) >> py4j.protocol.Py4JJavaError: An error occurred while calling t.testByte. >> : java.lang.ClassCastException: java.lang.Integer cannot be cast to >> java.lang.Byte >> at Test.testByte(Test.java:8) >> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) >> at >> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) >> at >> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) >> at java.lang.reflect.Method.invoke(Method.java:497) >> at py4j.reflection.MethodInvoker.invoke(MethodInvoker.java:231) >> at py4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:379) >> at py4j.Gateway.invoke(Gateway.java:259) >> at py4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:133) >> at py4j.commands.CallCommand.execute(CallCommand.java:79) >> at py4j.GatewayConnection.run(GatewayConnection.java:207) >> at java.lang.Thread.run(Thread.java:745) >> >> Is there some way to work around this? Ideally there would be away >> without having to make changes on the Java-side, since for my actual >> use-case I'm trying to call into an API I don't control. I could probably >> make things work if I needed to call a Java shim instead, but I'd really >> like to avoid that. >> >> Thanks, >> Dan O'Reilly >> >> >> ------------------------------------------------------------------------------ >> Don't Limit Your Business. Reach for the Cloud. >> GigeNET's Cloud Solutions provide you with the tools and support that >> you need to offload your IT needs and focus on growing your business. >> Configured For All Businesses. Start Your Cloud Today. >> https://www.gigenetcloud.com/ >> _______________________________________________ >> Py4j-users mailing list >> Py4...@li... >> https://lists.sourceforge.net/lists/listinfo/py4j-users >> > > ------------------------------------------------------------------------------ > Don't Limit Your Business. Reach for the Cloud. > GigeNET's Cloud Solutions provide you with the tools and support that > you need to offload your IT needs and focus on growing your business. > Configured For All Businesses. Start Your Cloud Today. > https://www.gigenetcloud.com/ > _______________________________________________ > Py4j-users mailing list > Py4...@li... > https://lists.sourceforge.net/lists/listinfo/py4j-users > |
From: Barthelemy D. <bar...@in...> - 2015-07-15 00:25:00
|
After some investigation, there is no easy or quick solution because of the difference in the type systems and the autoboxing behavior of Java. From a design perspective, I'm pretty sure converting primitives such as short to Python int is saner than trying to track the original primitive type. Preventing primitive wrapper (such as Byte and Short) from being converted to Python int though makes a lot of sense, but requires a few non trivial changes. It's doable and I have a plan, but it won't be available before a few weeks, so your best bet on the short term is to rely on a Java shim or a third party library. Link to Github issue for reference: https://github.com/bartdag/py4j/issues/163 Barthelemy On Tue, Jul 14, 2015 at 2:26 PM Dan O'Reilly <ore...@gm...> wrote: > It seems that on the Python side, Py4J will automatically convert the java > type short (and byte) to the Python type int, which means there's no way to > pass a List<short> from Python to Java. Consider this example: > > import java.util.List; > > import py4j.GatewayServer; > > class Test { > > public void testByte(List<Byte> l) { > Byte i = l.get(0); > } > > public static void main(String[] args) { > GatewayServer gw = new GatewayServer(new Test()); > gw.start(); > System.out.println("GatewayServer started..."); > } > } > > If I try to call testByte from the Python side, I seem to get an > ClassCastException no matter what I try: > > >>> gw = JavaGateway() > >>> z = ListConverter().convert([1,2], gw._gateway_client) > >>> gw.entry_point.testByte(z) > Traceback (most recent call last): > File "<stdin>", line 1, in <module> > File "/usr/local/lib/python2.7/dist-packages/py4j/java_gateway.py", line > 538, in __call__ > self.target_id, self.name) > File "/usr/local/lib/python2.7/dist-packages/py4j/protocol.py", line > 300, in get_return_value > format(target_id, '.', name), value) > py4j.protocol.Py4JJavaError: An error occurred while calling t.testByte. > : java.lang.ClassCastException: java.lang.Integer cannot be cast to > java.lang.Byte > at Test.testByte(Test.java:8) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > at java.lang.reflect.Method.invoke(Method.java:497) > at py4j.reflection.MethodInvoker.invoke(MethodInvoker.java:231) > at py4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:379) > at py4j.Gateway.invoke(Gateway.java:259) > at py4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:133) > at py4j.commands.CallCommand.execute(CallCommand.java:79) > at py4j.GatewayConnection.run(GatewayConnection.java:207) > at java.lang.Thread.run(Thread.java:745) > > > >>> z = > ListConverter().convert([gw.jvm.java.lang.Byte(1),gw.jvm.java.lang.Byte(2)], > gw._gateway_client) > >>> gw.entry_point.testByte(z) > Traceback (most recent call last): > File "<stdin>", line 1, in <module> > File "/usr/local/lib/python2.7/dist-packages/py4j/java_gateway.py", line > 538, in __call__ > self.target_id, self.name) > File "/usr/local/lib/python2.7/dist-packages/py4j/protocol.py", line > 300, in get_return_value > format(target_id, '.', name), value) > py4j.protocol.Py4JJavaError: An error occurred while calling t.testByte. > : java.lang.ClassCastException: java.lang.Integer cannot be cast to > java.lang.Byte > at Test.testByte(Test.java:8) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > at java.lang.reflect.Method.invoke(Method.java:497) > at py4j.reflection.MethodInvoker.invoke(MethodInvoker.java:231) > at py4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:379) > at py4j.Gateway.invoke(Gateway.java:259) > at py4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:133) > at py4j.commands.CallCommand.execute(CallCommand.java:79) > at py4j.GatewayConnection.run(GatewayConnection.java:207) > at java.lang.Thread.run(Thread.java:745) > > Is there some way to work around this? Ideally there would be away without > having to make changes on the Java-side, since for my actual use-case I'm > trying to call into an API I don't control. I could probably make things > work if I needed to call a Java shim instead, but I'd really like to avoid > that. > > Thanks, > Dan O'Reilly > > > ------------------------------------------------------------------------------ > Don't Limit Your Business. Reach for the Cloud. > GigeNET's Cloud Solutions provide you with the tools and support that > you need to offload your IT needs and focus on growing your business. > Configured For All Businesses. Start Your Cloud Today. > https://www.gigenetcloud.com/ > _______________________________________________ > Py4j-users mailing list > Py4...@li... > https://lists.sourceforge.net/lists/listinfo/py4j-users > |
From: Barthelemy D. <bar...@in...> - 2015-07-14 19:30:48
|
Hi, Thanks for using Py4J! short answer to your question: creating a Java shim is the way to go for now, but I'm willing to at least allow the option to prevent autoboxing so that if you create a java.lang.Byte, it is not converted to an int and it stays an instance of JavaObject on the Python side. I'll look at the code tonight and get back to you if that's something I can implement relatively quickly. alternative: you can pass a byte array and then use something like ArrayUtils from Apache Commons to create your list: gateway.jvm.org.apache.commons.lang.ArrayUtils.toObject(bytes([1, 2, 3])) long answer: matching primitives is difficult because of the inherent differences in the Java and Python type systems. Py4J. Py4J tries to optimize for the common case and expect the user to create Java shims when the default type conversion does not match the desired use case for primitives. HTH, Barthelemy On Tue, Jul 14, 2015 at 2:26 PM Dan O'Reilly <ore...@gm...> wrote: > It seems that on the Python side, Py4J will automatically convert the java > type short (and byte) to the Python type int, which means there's no way to > pass a List<short> from Python to Java. Consider this example: > > import java.util.List; > > import py4j.GatewayServer; > > class Test { > > public void testByte(List<Byte> l) { > Byte i = l.get(0); > } > > public static void main(String[] args) { > GatewayServer gw = new GatewayServer(new Test()); > gw.start(); > System.out.println("GatewayServer started..."); > } > } > > If I try to call testByte from the Python side, I seem to get an > ClassCastException no matter what I try: > > >>> gw = JavaGateway() > >>> z = ListConverter().convert([1,2], gw._gateway_client) > >>> gw.entry_point.testByte(z) > Traceback (most recent call last): > File "<stdin>", line 1, in <module> > File "/usr/local/lib/python2.7/dist-packages/py4j/java_gateway.py", line > 538, in __call__ > self.target_id, self.name) > File "/usr/local/lib/python2.7/dist-packages/py4j/protocol.py", line > 300, in get_return_value > format(target_id, '.', name), value) > py4j.protocol.Py4JJavaError: An error occurred while calling t.testByte. > : java.lang.ClassCastException: java.lang.Integer cannot be cast to > java.lang.Byte > at Test.testByte(Test.java:8) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > at java.lang.reflect.Method.invoke(Method.java:497) > at py4j.reflection.MethodInvoker.invoke(MethodInvoker.java:231) > at py4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:379) > at py4j.Gateway.invoke(Gateway.java:259) > at py4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:133) > at py4j.commands.CallCommand.execute(CallCommand.java:79) > at py4j.GatewayConnection.run(GatewayConnection.java:207) > at java.lang.Thread.run(Thread.java:745) > > > >>> z = > ListConverter().convert([gw.jvm.java.lang.Byte(1),gw.jvm.java.lang.Byte(2)], > gw._gateway_client) > >>> gw.entry_point.testByte(z) > Traceback (most recent call last): > File "<stdin>", line 1, in <module> > File "/usr/local/lib/python2.7/dist-packages/py4j/java_gateway.py", line > 538, in __call__ > self.target_id, self.name) > File "/usr/local/lib/python2.7/dist-packages/py4j/protocol.py", line > 300, in get_return_value > format(target_id, '.', name), value) > py4j.protocol.Py4JJavaError: An error occurred while calling t.testByte. > : java.lang.ClassCastException: java.lang.Integer cannot be cast to > java.lang.Byte > at Test.testByte(Test.java:8) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > at java.lang.reflect.Method.invoke(Method.java:497) > at py4j.reflection.MethodInvoker.invoke(MethodInvoker.java:231) > at py4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:379) > at py4j.Gateway.invoke(Gateway.java:259) > at py4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:133) > at py4j.commands.CallCommand.execute(CallCommand.java:79) > at py4j.GatewayConnection.run(GatewayConnection.java:207) > at java.lang.Thread.run(Thread.java:745) > > Is there some way to work around this? Ideally there would be away without > having to make changes on the Java-side, since for my actual use-case I'm > trying to call into an API I don't control. I could probably make things > work if I needed to call a Java shim instead, but I'd really like to avoid > that. > > Thanks, > Dan O'Reilly > > > ------------------------------------------------------------------------------ > Don't Limit Your Business. Reach for the Cloud. > GigeNET's Cloud Solutions provide you with the tools and support that > you need to offload your IT needs and focus on growing your business. > Configured For All Businesses. Start Your Cloud Today. > https://www.gigenetcloud.com/ > _______________________________________________ > Py4j-users mailing list > Py4...@li... > https://lists.sourceforge.net/lists/listinfo/py4j-users > |
From: Dan O'R. <ore...@gm...> - 2015-07-14 18:26:36
|
It seems that on the Python side, Py4J will automatically convert the java type short (and byte) to the Python type int, which means there's no way to pass a List<short> from Python to Java. Consider this example: import java.util.List; import py4j.GatewayServer; class Test { public void testByte(List<Byte> l) { Byte i = l.get(0); } public static void main(String[] args) { GatewayServer gw = new GatewayServer(new Test()); gw.start(); System.out.println("GatewayServer started..."); } } If I try to call testByte from the Python side, I seem to get an ClassCastException no matter what I try: >>> gw = JavaGateway() >>> z = ListConverter().convert([1,2], gw._gateway_client) >>> gw.entry_point.testByte(z) Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/usr/local/lib/python2.7/dist-packages/py4j/java_gateway.py", line 538, in __call__ self.target_id, self.name) File "/usr/local/lib/python2.7/dist-packages/py4j/protocol.py", line 300, in get_return_value format(target_id, '.', name), value) py4j.protocol.Py4JJavaError: An error occurred while calling t.testByte. : java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Byte at Test.testByte(Test.java:8) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:497) at py4j.reflection.MethodInvoker.invoke(MethodInvoker.java:231) at py4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:379) at py4j.Gateway.invoke(Gateway.java:259) at py4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:133) at py4j.commands.CallCommand.execute(CallCommand.java:79) at py4j.GatewayConnection.run(GatewayConnection.java:207) at java.lang.Thread.run(Thread.java:745) >>> z = ListConverter().convert([gw.jvm.java.lang.Byte(1),gw.jvm.java.lang.Byte(2)], gw._gateway_client) >>> gw.entry_point.testByte(z) Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/usr/local/lib/python2.7/dist-packages/py4j/java_gateway.py", line 538, in __call__ self.target_id, self.name) File "/usr/local/lib/python2.7/dist-packages/py4j/protocol.py", line 300, in get_return_value format(target_id, '.', name), value) py4j.protocol.Py4JJavaError: An error occurred while calling t.testByte. : java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Byte at Test.testByte(Test.java:8) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:497) at py4j.reflection.MethodInvoker.invoke(MethodInvoker.java:231) at py4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:379) at py4j.Gateway.invoke(Gateway.java:259) at py4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:133) at py4j.commands.CallCommand.execute(CallCommand.java:79) at py4j.GatewayConnection.run(GatewayConnection.java:207) at java.lang.Thread.run(Thread.java:745) Is there some way to work around this? Ideally there would be away without having to make changes on the Java-side, since for my actual use-case I'm trying to call into an API I don't control. I could probably make things work if I needed to call a Java shim instead, but I'd really like to avoid that. Thanks, Dan O'Reilly |
From: Bernardo C. <ber...@ho...> - 2015-06-28 17:53:05
|
Hi Barthélémy, i have changed the classpath and it works. Thank you,Regards,Bernardo From: bar...@in... Date: Sun, 28 Jun 2015 09:35:28 +0000 To: py4...@li... Subject: Re: [Py4j-users] Getting started with Py4j Hi Bernardo, I should probably put this in the documentation, but you can try this approach: cd $HOME mkdir -p tutorial/py4j/examples cd tutorial # copy the py4j.jar here # copy Stack.java to py4j/examples # copy StackEntryPoint.java to py4j/examples # you are still in ~/tutorial javac -cp py4j.jar py4j/*/*.java # you should see .class files now in py4j/examples # you are still in ~/tutorial java -cp py4j.jar:. py4j.examples.StackEntryPoint HTH, Barthélémy On Thu, Jun 25, 2015 at 9:34 AM Bernardo Caseiro <ber...@ho...> wrote: Thanks for answer! My source files are on desktop/py4j-0.8.2.1. I execute the command javac in terminal to compile the java file. i didn't set the classpath how should i do it? i can use eclipse if is easier. Regards,Bernardo From: bar...@in... Date: Wed, 24 Jun 2015 23:30:52 +0000 To: py4...@li... Subject: Re: [Py4j-users] Getting started with Py4j Hi Bernardo, Thanks for trying Py4J! we will need more information to help you: how are your source files organized on your disk? what exact command are you running? Did you set the classpath? The tutorial assumes some knowledge of Java and it is usually easier to compile Java programs from an IDE such as Eclipse or IntelliJ. Regards, Barthélémy On Wed, Jun 24, 2015 at 12:54 PM Bernardo Caseiro <ber...@ho...> wrote: Hello, I'm new using Py4j, and i try to do the tuturial from the home page. I'm using the command line on ubuntu but i can't compile the StackEntryPoint to see the message Gateway Server Started. it occurs this error: error: cannot find symbol import py4j.GatewayServer; What should i do? Thank's in advance, Bernardo ------------------------------------------------------------------------------ Monitor 25 network devices or servers for free with OpManager! OpManager is web-based network management software that monitors network devices and physical & virtual servers, alerts via email & sms for fault. Monitor 25 devices for free with no restriction. Download now http://ad.doubleclick.net/ddm/clk/292181274;119417398;o_______________________________________________ Py4j-users mailing list Py4...@li... https://lists.sourceforge.net/lists/listinfo/py4j-users ------------------------------------------------------------------------------ Monitor 25 network devices or servers for free with OpManager! OpManager is web-based network management software that monitors network devices and physical & virtual servers, alerts via email & sms for fault. Monitor 25 devices for free with no restriction. Download now http://ad.doubleclick.net/ddm/clk/292181274;119417398;o _______________________________________________ Py4j-users mailing list Py4...@li... https://lists.sourceforge.net/lists/listinfo/py4j-users ------------------------------------------------------------------------------ Monitor 25 network devices or servers for free with OpManager! OpManager is web-based network management software that monitors network devices and physical & virtual servers, alerts via email & sms for fault. Monitor 25 devices for free with no restriction. Download now http://ad.doubleclick.net/ddm/clk/292181274;119417398;o_______________________________________________ Py4j-users mailing list Py4...@li... https://lists.sourceforge.net/lists/listinfo/py4j-users ------------------------------------------------------------------------------ Monitor 25 network devices or servers for free with OpManager! OpManager is web-based network management software that monitors network devices and physical & virtual servers, alerts via email & sms for fault. Monitor 25 devices for free with no restriction. Download now http://ad.doubleclick.net/ddm/clk/292181274;119417398;o _______________________________________________ Py4j-users mailing list Py4...@li... https://lists.sourceforge.net/lists/listinfo/py4j-users |
From: Barthelemy D. <bar...@in...> - 2015-06-28 09:35:45
|
Hi Bernardo, I should probably put this in the documentation, but you can try this approach: cd $HOME mkdir -p tutorial/py4j/examples cd tutorial # copy the py4j.jar here # copy Stack.java to py4j/examples # copy StackEntryPoint.java to py4j/examples # you are still in ~/tutorial javac -cp py4j.jar py4j/*/*.java # you should see .class files now in py4j/examples # you are still in ~/tutorial java -cp py4j.jar:. py4j.examples.StackEntryPoint HTH, Barthélémy On Thu, Jun 25, 2015 at 9:34 AM Bernardo Caseiro < ber...@ho...> wrote: > Thanks for answer! > > My source files are on desktop/py4j-0.8.2.1. I execute the command javac > in terminal to compile the java file. i didn't set the classpath how should > i do it? i can use eclipse if is easier. > > Regards, > Bernardo > > > > ------------------------------ > From: bar...@in... > Date: Wed, 24 Jun 2015 23:30:52 +0000 > To: py4...@li... > Subject: Re: [Py4j-users] Getting started with Py4j > > > Hi Bernardo, > > Thanks for trying Py4J! > > we will need more information to help you: how are your source files > organized on your disk? what exact command are you running? Did you set the > classpath? The tutorial assumes some knowledge of Java and it is usually > easier to compile Java programs from an IDE such as Eclipse or IntelliJ. > > Regards, > Barthélémy > > On Wed, Jun 24, 2015 at 12:54 PM Bernardo Caseiro < > ber...@ho...> wrote: > > Hello, > > I'm new using Py4j, and i try to do the tuturial from the home page. > I'm using the command line on ubuntu but i can't compile the > StackEntryPoint to see the message Gateway Server Started. it occurs this > error: > > error: cannot find symbol > import py4j.GatewayServer; > > What should i do? > > Thank's in advance, > Bernardo > > ------------------------------------------------------------------------------ > Monitor 25 network devices or servers for free with OpManager! > OpManager is web-based network management software that monitors > network devices and physical & virtual servers, alerts via email & sms > for fault. Monitor 25 devices for free with no restriction. Download now > http://ad.doubleclick.net/ddm/clk/292181274;119417398;o > _______________________________________________ > Py4j-users mailing list > Py4...@li... > https://lists.sourceforge.net/lists/listinfo/py4j-users > > > ------------------------------------------------------------------------------ > Monitor 25 network devices or servers for free with OpManager! OpManager is > web-based network management software that monitors network devices and > physical & virtual servers, alerts via email & sms for fault. Monitor 25 > devices for free with no restriction. Download now > http://ad.doubleclick.net/ddm/clk/292181274;119417398;o > _______________________________________________ Py4j-users mailing list > Py4...@li... > https://lists.sourceforge.net/lists/listinfo/py4j-users > > ------------------------------------------------------------------------------ > Monitor 25 network devices or servers for free with OpManager! > OpManager is web-based network management software that monitors > network devices and physical & virtual servers, alerts via email & sms > for fault. Monitor 25 devices for free with no restriction. Download now > http://ad.doubleclick.net/ddm/clk/292181274;119417398;o > _______________________________________________ > Py4j-users mailing list > Py4...@li... > https://lists.sourceforge.net/lists/listinfo/py4j-users > |
From: Bernardo C. <ber...@ho...> - 2015-06-25 13:34:45
|
Thanks for answer! My source files are on desktop/py4j-0.8.2.1. I execute the command javac in terminal to compile the java file. i didn't set the classpath how should i do it? i can use eclipse if is easier. Regards,Bernardo From: bar...@in... Date: Wed, 24 Jun 2015 23:30:52 +0000 To: py4...@li... Subject: Re: [Py4j-users] Getting started with Py4j Hi Bernardo, Thanks for trying Py4J! we will need more information to help you: how are your source files organized on your disk? what exact command are you running? Did you set the classpath? The tutorial assumes some knowledge of Java and it is usually easier to compile Java programs from an IDE such as Eclipse or IntelliJ. Regards, Barthélémy On Wed, Jun 24, 2015 at 12:54 PM Bernardo Caseiro <ber...@ho...> wrote: Hello, I'm new using Py4j, and i try to do the tuturial from the home page. I'm using the command line on ubuntu but i can't compile the StackEntryPoint to see the message Gateway Server Started. it occurs this error: error: cannot find symbol import py4j.GatewayServer; What should i do? Thank's in advance, Bernardo ------------------------------------------------------------------------------ Monitor 25 network devices or servers for free with OpManager! OpManager is web-based network management software that monitors network devices and physical & virtual servers, alerts via email & sms for fault. Monitor 25 devices for free with no restriction. Download now http://ad.doubleclick.net/ddm/clk/292181274;119417398;o_______________________________________________ Py4j-users mailing list Py4...@li... https://lists.sourceforge.net/lists/listinfo/py4j-users ------------------------------------------------------------------------------ Monitor 25 network devices or servers for free with OpManager! OpManager is web-based network management software that monitors network devices and physical & virtual servers, alerts via email & sms for fault. Monitor 25 devices for free with no restriction. Download now http://ad.doubleclick.net/ddm/clk/292181274;119417398;o _______________________________________________ Py4j-users mailing list Py4...@li... https://lists.sourceforge.net/lists/listinfo/py4j-users |
From: Barthelemy D. <bar...@in...> - 2015-06-24 23:31:11
|
Hi Bernardo, Thanks for trying Py4J! we will need more information to help you: how are your source files organized on your disk? what exact command are you running? Did you set the classpath? The tutorial assumes some knowledge of Java and it is usually easier to compile Java programs from an IDE such as Eclipse or IntelliJ. Regards, Barthélémy On Wed, Jun 24, 2015 at 12:54 PM Bernardo Caseiro < ber...@ho...> wrote: > Hello, > > I'm new using Py4j, and i try to do the tuturial from the home page. > I'm using the command line on ubuntu but i can't compile the > StackEntryPoint to see the message Gateway Server Started. it occurs this > error: > > error: cannot find symbol > import py4j.GatewayServer; > > What should i do? > > Thank's in advance, > Bernardo > > ------------------------------------------------------------------------------ > Monitor 25 network devices or servers for free with OpManager! > OpManager is web-based network management software that monitors > network devices and physical & virtual servers, alerts via email & sms > for fault. Monitor 25 devices for free with no restriction. Download now > http://ad.doubleclick.net/ddm/clk/292181274;119417398;o > _______________________________________________ > Py4j-users mailing list > Py4...@li... > https://lists.sourceforge.net/lists/listinfo/py4j-users > |
From: Bernardo C. <ber...@ho...> - 2015-06-24 16:54:56
|
Hello, I'm new using Py4j, and i try to do the tuturial from the home page. I'm using the command line on ubuntu but i can't compile the StackEntryPoint to see the message Gateway Server Started. it occurs this error: error: cannot find symbol import py4j.GatewayServer; What should i do? Thank's in advance, Bernardo |
From: Alex G. <ale...@ne...> - 2015-03-30 20:53:38
|
30.03.2015, 19:35, Israel Brewster kirjoitti: > Except that looses the "new" command. That is, my java code is: > > InputStream data=new ByteArrayInputStream(jsonData.getBytes("UTF-8")); > > Not > > InputStream data=ByteArrayInputStream(jsonData.getBytes("UTF-8")); > > Unless in Java that doesn't matter? Or perhaps I'm missing something > about the way py4j works, i.e. there's an implicit "new" call? Classes are instantiated with py4j exactly the same way as in Python generally: by calling the class itself. In Java, the "new" operator is not optional. In Python (and py4j), it simply doesn't exist. > > ----------------------------------------------- > Israel Brewster > Systems Analyst II > Ravn Alaska > 5245 Airport Industrial Rd > Fairbanks, AK 99709 > (907) 450-7293 > ----------------------------------------------- > > > > > >> On Mar 27, 2015, at 3:42 PM, Barthelemy Dagenais >> <bar...@in... <mailto:bar...@in...>> wrote: >> >> Hi, >> >> how about: >> >> data = >> gateway.jvm.java.io.ByteArrayInputStream(jsonData.getBytes("UTF-8")) >> >> References in the documentation: >> http://py4j.sourceforge.net/faq.html#how-to-call-a-constructor >> http://py4j.sourceforge.net/getting_started.html#collections-help-and-constructors >> >> On Fri, Mar 27, 2015 at 1:36 PM, Israel >> Brewster<is...@ra... <mailto:is...@ra...>>wrote: >> >> Is there a way in py4j to call the java "new" command? That is, >> in java I have some code like: >> >> InputStream data=new ByteArrayInputStream(jsonData.getBytes("UTF-8")); >> >> Is there a way to pull that across to the python side, or do I >> just have to make a bunch of utility functions in Java for this? >> >> I'm trying to make the Jasper Reports library available to my >> python code, and while it works for the most part I haven't yet >> figured out object creation. Thanks. >> ----------------------------------------------- >> Israel Brewster >> Systems Analyst II >> Ravn Alaska >> 5245 Airport Industrial Rd >> Fairbanks, AK 99709 >> (907) 450-7293 <tel:%28907%29%20450-7293> >> ----------------------------------------------- >> >> >> >> >> >> ------------------------------------------------------------------------------ >> Dive into the World of Parallel Programming The Go Parallel >> Website, sponsored >> by Intel and developed in partnership with Slashdot Media, is >> your hub for all >> things parallel software development, from weekly thought >> leadership blogs to >> news, videos, case studies, tutorials and more. Take a look and >> join the >> conversation now.http://goparallel.sourceforge.net/ >> _______________________________________________ >> Py4j-users mailing list >> Py4...@li... >> <mailto:Py4...@li...> >> https://lists.sourceforge.net/lists/listinfo/py4j-users >> >> >> ------------------------------------------------------------------------------ >> Dive into the World of Parallel Programming The Go Parallel Website, >> sponsored >> by Intel and developed in partnership with Slashdot Media, is your >> hub for all >> things parallel software development, from weekly thought leadership >> blogs to >> news, videos, case studies, tutorials and more. Take a look and join the >> conversation >> now.http://goparallel.sourceforge.net/_______________________________________________ >> Py4j-users mailing list >> Py4...@li... >> <mailto:Py4...@li...> >> https://lists.sourceforge.net/lists/listinfo/py4j-users > > > > ------------------------------------------------------------------------------ > Dive into the World of Parallel Programming The Go Parallel Website, sponsored > by Intel and developed in partnership with Slashdot Media, is your hub for all > things parallel software development, from weekly thought leadership blogs to > news, videos, case studies, tutorials and more. Take a look and join the > conversation now. http://goparallel.sourceforge.net/ > > > _______________________________________________ > Py4j-users mailing list > Py4...@li... > https://lists.sourceforge.net/lists/listinfo/py4j-users |
From: Israel B. <is...@ra...> - 2015-03-30 16:34:53
|
Except that looses the "new" command. That is, my java code is: InputStream data=new ByteArrayInputStream(jsonData.getBytes("UTF-8")); Not InputStream data=ByteArrayInputStream(jsonData.getBytes("UTF-8")); Unless in Java that doesn't matter? Or perhaps I'm missing something about the way py4j works, i.e. there's an implicit "new" call? ----------------------------------------------- Israel Brewster Systems Analyst II Ravn Alaska 5245 Airport Industrial Rd Fairbanks, AK 99709 (907) 450-7293 ----------------------------------------------- > On Mar 27, 2015, at 3:42 PM, Barthelemy Dagenais <bar...@in...> wrote: > > Hi, > > how about: > > data = gateway.jvm.java.io.ByteArrayInputStream(jsonData.getBytes("UTF-8")) > > References in the documentation: > http://py4j.sourceforge.net/faq.html#how-to-call-a-constructor <http://py4j.sourceforge.net/faq.html#how-to-call-a-constructor> > http://py4j.sourceforge.net/getting_started.html#collections-help-and-constructors <http://py4j.sourceforge.net/getting_started.html#collections-help-and-constructors> > > On Fri, Mar 27, 2015 at 1:36 PM, Israel Brewster <is...@ra... <mailto:is...@ra...>> wrote: > Is there a way in py4j to call the java "new" command? That is, in java I have some code like: > > InputStream data=new ByteArrayInputStream(jsonData.getBytes("UTF-8")); > > Is there a way to pull that across to the python side, or do I just have to make a bunch of utility functions in Java for this? > > I'm trying to make the Jasper Reports library available to my python code, and while it works for the most part I haven't yet figured out object creation. Thanks. > ----------------------------------------------- > Israel Brewster > Systems Analyst II > Ravn Alaska > 5245 Airport Industrial Rd > Fairbanks, AK 99709 > (907) 450-7293 <tel:%28907%29%20450-7293> > ----------------------------------------------- > > > > > > ------------------------------------------------------------------------------ > Dive into the World of Parallel Programming The Go Parallel Website, sponsored > by Intel and developed in partnership with Slashdot Media, is your hub for all > things parallel software development, from weekly thought leadership blogs to > news, videos, case studies, tutorials and more. Take a look and join the > conversation now. http://goparallel.sourceforge.net/ <http://goparallel.sourceforge.net/> > _______________________________________________ > Py4j-users mailing list > Py4...@li... <mailto:Py4...@li...> > https://lists.sourceforge.net/lists/listinfo/py4j-users <https://lists.sourceforge.net/lists/listinfo/py4j-users> > > > ------------------------------------------------------------------------------ > Dive into the World of Parallel Programming The Go Parallel Website, sponsored > by Intel and developed in partnership with Slashdot Media, is your hub for all > things parallel software development, from weekly thought leadership blogs to > news, videos, case studies, tutorials and more. Take a look and join the > conversation now. http://goparallel.sourceforge.net/_______________________________________________ <http://goparallel.sourceforge.net/_______________________________________________> > Py4j-users mailing list > Py4...@li... <mailto:Py4...@li...> > https://lists.sourceforge.net/lists/listinfo/py4j-users <https://lists.sourceforge.net/lists/listinfo/py4j-users> |