0
点赞
收藏
分享

微信扫一扫

绿化版Java11的环境配置与Python调用Java

半秋L 2022-09-27 阅读 202


绿化Java环境的安装与配置

安装JDK

在Oracle的官网下载:

绿化版Java11的环境配置与Python调用Java_java

官方最新版本是16,个人选择下载11版本的zip压缩包:jdk-11.0.6_windows-x64_bin.zip

网盘下载地址:

链接:https://pan.baidu.com/s/16vNLcOVd5LfTRoAnneL2ww
提取码:6uke

我解压到了D:\deploy目录下:

绿化版Java11的环境配置与Python调用Java_jar_02

设置环境变量

然后需要将该目录添加JAVA_HOME环境变量中。官方的说明是:

绿化版Java11的环境配置与Python调用Java_jar_03

大致操作:

绿化版Java11的环境配置与Python调用Java_jar_04

绿化版Java11的环境配置与Python调用Java_jar_05

然后将%JAVA_HOME%\bin添加到path环境变量中:

绿化版Java11的环境配置与Python调用Java_jar_06

注意:添加到用户的Path环境变量和系统的Path环境变量都可以,区别在于当前用户生效还是当前电脑所有用户都生效。

把​​JAVA_HOME​​​的​​bin​​​目录添加到​​PATH​​​中是为了在任意文件夹下都可以运行​​java​​。

至此Java已经安装完毕,下面我们验证一下安装是否成功:

验证安装

打开命令行,输入如下命令,如果安装成功,会看到如下输出:

Microsoft Windows [版本 10.0.18363.418]
(c) 2019 Microsoft Corporation。保留所有权利。

C:\Users\ASUS>java -version
java version "11.0.5" 2019-10-15 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.5+10-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.5+10-LTS, mixed mode)

C:\Users\ASUS>

如果你看到的版本号不是​​16​​​,而是​​15​​​、​​1.8​​​之类,说明系统存在多个JDK,且默认JDK不是JDK 16,需要把JDK 16提到​​PATH​​前面。

JDK中的可执行文件

在​​JAVA_HOME​​​的​​bin​​目录下有很多可执行文件,常用的有:

  • java:用于启动JVM执行指定的编译后的代码;
  • javaw:也用于启动JVM执行指定的编译后的代码,但无控制台窗口;
  • javac:用于把Java源码文件(​​.java​​​后缀)编译为Java字节码文件(​​.class​​后缀);
  • jar:用于把一组​​.class​​​文件打包成一个​​.jar​​文件;
  • javadoc:用于从Java源码中自动提取注释并生成文档;
  • jdb:Java调试器,用于开发阶段的运行调试。

配置双击直接执行Jar程序

在没有配置前,我们需要通过​​java -jar xxx.jar​​命令来启动程序:

绿化版Java11的环境配置与Python调用Java_环境变量_07

现在我们希望以后能直接双击打开。

首先,随便找个jar文件右键单击点打开方式–>默认打开方式,点预览,选择%JAVA_HOME%\bin下的javaw.exe文件点确定,让注册表中先生成相应的项和值:

绿化版Java11的环境配置与Python调用Java_java_08

然后修改刚才生成的注册表项(regedit命令打开注册表):

修改HKEY_CLASSES_ROOT\Applications\javaw.exe\shell\open\command的默认值:


"D:\deploy\jdk-11.0.5\bin\javaw.exe" "%1"
改为
"D:\deploy\jdk-11.0.5\bin\javaw.exe" -jar "%1"

绿化版Java11的环境配置与Python调用Java_jar_09

将jar包文件属性改成如下形式:

绿化版Java11的环境配置与Python调用Java_jar_10

再次双击Jar包就打开了程序:

绿化版Java11的环境配置与Python调用Java_环境变量_11

Python调用Java

首先安装JPype:

pip install jpype1

直接调用Java的函数

在IDE工具中执行以下代码:

__author__ = "小小明"

from jpype import *

if __name__ == "__main__":
# 启动java虚拟机
jvm_path = getDefaultJVMPath()
print(jvm_path)
startJVM(jvm_path, "-ea")
# 调用println函数
java.lang.System.out.println("hello world,hello python,hello java")
# 关闭虚拟机
shutdownJVM()

结果:

D:\deploy\jdk-11.0.5\bin\server\jvm.dll
hello world,hello python,hello java

执行现成的可执行Jar包

比如我们执行前面提到的jar包:

__author__ = "小小明"

from jpype import JClass
from jpype import startJVM, getDefaultJVMPath, shutdownJVM

if __name__ == "__main__":
# 启动java虚拟机
# 注意使用了-D选项指定了jar的目标位置
startJVM(getDefaultJVMPath(), "-ea",
"-Djava.class.path=E:/tmp/jfreechart-1.0.13-demo.jar")
# 加载自定义的java class
SuperDemo = JClass("demo.SuperDemo")
SuperDemo.main([])
# 关闭虚拟机
shutdownJVM()

再IDE中执行后已经顺利的运行Java桌面程序。

调用自己编写的Java类

创建Java文件JPypeDemo.Java内容如下:

public class JPypeDemo{
public String say(String user){
return "[小小明]说: " + user;
}

public int calc(int a, int b){
return a + b;
}
}

编译Java源代码:

javac JPypeDemo.java -encoding UTF-8

注意:encoding参数指定你的Java源码实际保存的编码

打包成jar文件:

jar cvf JPypeDemo.jar JPypeDemo.class

编译和打包好的文件:

绿化版Java11的环境配置与Python调用Java_jar_12

然后我们可以在Python中调用:

__author__ = "小小明"

from jpype import JClass, java
from jpype import startJVM, getDefaultJVMPath, shutdownJVM

import os

if __name__ == "__main__":
# 启动java虚拟机
# 注意使用了-D选项指定了jar的目标位置
startJVM(getDefaultJVMPath(), "-ea", "-Djava.class.path=./JPypeDemo.jar")
# 加载自定义的java class
JDClass = JClass("JPypeDemo")
jd = JDClass()

# 获取java标准库打印函数
jprint = java.lang.System.out.println
# 调用自定义class中的函数,并输出返回值
jprint(jd.say("你好!"))

jprint(jd.calc(5, 4))

# 关闭虚拟机
shutdownJVM()

结果:

[СС��]˵: ��ã�
9

在Pycharm执行出现乱码。但在本地命令行窗口执行一切正常,结果:

[小小明]说: 你好!
9

官方手册

​​http://jpype.readthedocs.io/en/latest/userguide.html#​​



举报

相关推荐

0 条评论