0

I am trying something out combining java and python for some encryption reasons where the encryption code is actually a java file from the provider but I am writing a python code. So what I want is to execute the encryption code on java using

x = os.system("java file.java")

and just return the value from the java execution like in a function

print x

Like this:

java_hello_world.py

import os

x = os.system("java HelloWorld")
print x # This should print HELLO WORLD

HelloWorld.java

public class HelloWorld {
    public static void main(String[] args) {
        String x;
        x = "Hello World";
        System.out.println(x);
        return "HELLO WORLD";
    }

}

The java file above by the way returns an error:

HelloWorld.java:7: error: incompatible types: unexpected return value
return x;

PS

I am not a Java Developer, I have zero experience

Any suggested method will be great as long as I have my desired result in python

Dean Christian Armada
  • 6,724
  • 9
  • 67
  • 116

2 Answers2

1

When you invoke another process there is no returning of values.

The only thing you could hope for is a numerical return code value.

What you are actually looking for is this:

  • the program that runs in that process writes to either stdout ... or to some file
  • your python code that triggered that process can then read that content

See here for instructions how your python script can read what a subprocess is writing its stdout.

And for the record: there are no detours. If you intend to do anything "serious" with your java code, then you have to learn enough Java to make that happen. Not understanding that a method that says void can't have a return something statement is a good example for that.

Same is true for the python side of things. Yes, os.system() is the simply, straight forward way to invoke some process. But if you do even a tiny bit of research on that subject, you might have seen that there is the subprocess module in python ... together with its documentation.

Community
  • 1
  • 1
GhostCat
  • 137,827
  • 25
  • 176
  • 248
0

Your main method can not return a value as it is declared void.

A process can only return a numeric exit code.

A way to communicate between different processes is IPC

KlemensE
  • 130
  • 2
  • 6