The simplest example with py4J

I installed py4J using pip in my conda virtual environment in Python. I wrote a super simple example AdditionApplication.java for testing py4J , but it will not compile, i.e.

javac AdditionApplication.java

does not respond that GatewayServer is undefined.

I am well versed in Python, but unfortunately not in Java. What else do I need to provide?

 public class AdditionApplication { public int addition(int first, int second) { return first + second; } public static void main(String[] args) { AdditionApplication app = new AdditionApplication(); // app is now the gateway.entry_point GatewayServer server = new GatewayServer(app); server.start(); } } 

In case it matters, I have the following version of Java installed:

 java -version java version "1.7.0_51" Java(TM) SE Runtime Environment (build 1.7.0_51-b13) Java HotSpot(TM) 64-Bit Server VM (build 24.51-b03, mixed mode) 

Update 1

After I added: import py4j.GatewayServer; At the beginning of the file, I got another error:

package py4j does not exist

Update 2

pip install py4j left the jar file in <PATH_TO_CONDA_ENVIRONMENT>/share/py4j/py4j0.8.1.jar . I added it to my class path with:

 javac -cp <PATH_TO_CONDA_ENVIRONMENT>/share/py4j/py4j0.8.1.jar AdditionApplication.java 

and displays

AdditionApplication.class

How to run it?

Final update and solution:

After applying the previous fixes, I finally run the code with:

 java -cp <PATH_TO_CONDA_ENVIRONMENT>/share/py4j/py4j0.8.1.jar AdditionApplication 

The code runs in the background. To check this:

 >>> from py4j.java_gateway import JavaGateway >>> gateway = JavaGateway() # connect to the JVM >>> random = gateway.jvm.java.util.Random() # create a java.util.Random instance >>> number1 = random.nextInt(10) # call the Random.nextInt method >>> number2 = random.nextInt(10) >>> print(number1,number2) (2, 7) >>> addition_app = gateway.entry_point # get the AdditionApplication instance >>> addition_app.addition(number1,number2) # call the addition method 
+7
java python py4j
source share
1 answer

Import GatewayServer from the GatewayServer package py4j that an unskilled class can be used in the application

 import py4j.GatewayServer; 
+5
source share

All Articles