网站首页 > java教程 正文
在这里,我介绍了运行Java程序的三个不同的选项; 首先使用(旧)运行时类,然后使用ProcessBuilder类,然后在Java中嵌入Python代码,使用Jython(Python解释器,用Java编写!)
运行时方法
首先,让一些旧的方式来做,运行时类。
import java.io. *;
class test1 {
public static void main(String a []){
尝试{
String prg =“import sys \ nprint int(sys.argv [1])+ int(sys.argv [2])\ n”;
BufferedWriter out = new BufferedWriter(new FileWriter(“test1.py”));
out.write(PRG);
out.close();
int number1 = 10;
int number2 = 32;
进程p = Runtime.getRuntime()。exec(“python test1.py”+ number1 +“”+ number2);
BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));
int ret = new Integer(in.readLine())。intValue();
System.out.println(“value is:”+ ret);
} catch(Exception e){}
}
}
我们首先制作一个Java String prg,它包含我们的Python程序,这个字符串保存在文件“test1.py”上。接下来,我们在系统上运行Python解释器,并在Runtime类中使用exec方法。我们读取从Runtime类返回的输出流的输出,并将其转换为Java int。
我将上述源代码保存为“test2.java”。我输入以下内容;
javac test2.java
要执行它:
java test2
进程方法
我认为运行时类方法有点旧。在最新的Java版本中,使用的是ProcessBuilder类。这给参数提供了更多的结构。
import java.io. *;
class test2 {
public static void main(String a []){
尝试{
String prg =“import sys \ nprint int(sys.argv [1])+ int(sys.argv [2])\ n”;
BufferedWriter out = new BufferedWriter(new FileWriter(“test1.py”));
out.write(PRG);
out.close();
int number1 = 10;
int number2 = 32;
ProcessBuilder pb = new ProcessBuilder(“python”,“test1.py”,“”+ number1“,”+ number2);
进程p = pb.start();
BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));
int ret = new Integer(in.readLine())。intValue();
System.out.println(“value is:”+ ret);
} catch(Exception e){System.out.println(e);}
}
}
我将上述保存为“test2.java”。然后我键入以下内容;
javac test2.java
要执行它:
java test2
Jython方法
Java应该是独立于平台的,并且调用本机应用程序(如python)不是非常平台独立的。
有一个用Java编写的Python(Jython)版本,它允许我们在我们的Java程序中嵌入Python。通常情况下,当您要使用外部库时,一个障碍就是编译并正确运行,因此我们将通过Jython来构建和运行一个简单的Java程序。
我们首先掌握jython jar文件:
http ://www.jython.org/downloads.html
(当我写这篇文章时,最新版本是:Jython 2.5.3)
我将jython-2.5.3.jar复制到我的Java程序将要的目录。然后我键入以下程序,它与前两个相同; 取两个数字,将它们发送到python,然后添加它们,然后python将其返回到我们的Java程序,其中的数字输出到屏幕上:
import org.python.util.PythonInterpreter;
import org.python.core。*;
class test3 {
public static void main(String a []){
PythonInterpreter python = new PythonInterpreter();
int number1 = 10;
int number2 = 32;
python.set(“number1”,新的PyInteger(number1));
python.set(“number2”,new PyInteger(number2));
python.exec(“number3 = number1 + number2”);
PyObject number3 = python.get(“number3”);
System.out.println(“val:”+ number3.toString());
}
}
我把这个文件称为“test3.java”,保存它,并执行以下操作来编译它:
javac -classpath jython-2.5.3.jar test3.java
下一步是尝试运行它,我以下列方式:
java -classpath jython-2.5.3.jar :. test3
现在,这允许我们以独立于平台的方式使用Java中的Python。这是一种缓慢的事实,感觉就像三种方法中最慢的一样。不过,它很酷,它是一个用Java编写的Python解释器...
猜你喜欢
- 2024-09-22 python实现WebService协议使用(pythonwebserver接口开发)
- 2024-09-22 玩转Termux:教你在手机上安装运行Python!
- 2024-09-22 Javaer自学python,吐槽难受的点(学了java再学python容易吗)
- 2024-09-22 实例编程:多语言语言调用Golang共享库
- 2024-09-22 Python 和 Java 基础对比 05 —— 程序的控制语句
- 2024-09-22 Python的模块导入和重载(python中模块导入的方法)
- 2024-09-22 python内置函数通过字符串的方式来执行函数代码块
- 2024-09-22 关于不同编程语言相互调用的思考(不同编程语言对接)
- 2024-09-22 Python 3.13 或将引入 JIT!(python引入包从哪里引入)
- 2024-09-22 如何使用 Python 实现网页自动化朗读?
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)