PHP-Java-bridge 的使用 java类转PHP
1.准备工作
文件介绍:
1. php-java-bridge_7.2.1
2. jdk-8u221-windows-x64 java运行环境必备 ,这里是sdk8 64位
3. Jetbrains IntelliJ IDEA 2020.1 64位 最好的java编程工具,可用于后面的打包工作
下载链接:
链接:https://pan.baidu.com/s/1aWAFaNKpQYlKFX2p1vW9GA
提取码:onq2
点击跳转
2.安装JDK(jdk-8u221-windows-x64)
a).下载后再Windows操作系统下直接双击运行。
b).更改安装路径,如不想更改可以直接一直下一步安装即可,这里的安装路径在后面的配置环境变量的时候要用
C).演示一下,我这边只有一个C盘,更改文件夹。
d).等待安装结束。
e).安装结束。
f).因为bridge也包括其他的java应用在运行的时候需要访问java的jdk,设置环境变量。
我的电脑->右击->属性->高级系统设置->环境变量->系统环境变量->新建
变量名称:JAVA_JDK 变量值:你的安装路径
g).编辑系统环境变量。
新建变量值:% JAVA_JDK%\bin;% JAVA_JDK%\jre\bin; 一行新建不成功的话,直接分开新建。
新建依次点击确定按钮关闭窗口即可。
g).验证是否安装成功。
使用java -version
打印java jdk 的版本,即可表示安装成功
3.Bridge(php-java-bridge_7.2.1)设置
a).解压后更改文件后缀。
更改JavaBridge.war的后缀jar
b).解压后进入到文件夹内。
c).运行JavaBridge.jar。
路径:JavaBridge/WEB-INF/lib 选择JavaBridge.jar运行
双击JavaBridge.jar运行,出现弹窗后直接确定,这里选择本地服务器和监听的端口,如果一闪而过,那就是你的环境变量不对,重新配置jdk环境变量
d).验证是否成功。
打开浏览器输入:http://127.0.0.1:8080/
,这里的URL就是你在上一步选择的本地服务器和端口,出现此页面表明启动成功
e).查看配置。
运行成功后,会在你当前双击的文件目录中出现一个log
关注这个配置路径,此路径用于后续的java的jar扩展包存放,将需要的jar放到此路径下,在运行JavaBridge后即可进行文件开发内的编程引入
4.Jetbrains IntelliJ IDEA 安装以及破解和汉化,参考下载后的文件夹内,这里就不在重复了,也可参考https://www.bilibili.com/read/cv17050351/的博客。
5.Jetbrains IntelliJ IDEA 新建项目及打包
a).新建项目
点击文件->New->Project
b).新建类
在src下的com.company中油价新建,java类,我这里输入Test。要有Main函数,作为主类文件
c).打JAR包
依次点击右上角的文件->项目结构,然后左侧选择Artifacts
点击加号->JAR->From modules with …
在顶部的按钮中选择构建,然后点击构建项目
选择一个需要构建的记录进行build
在IDE的底部可以看到正在执行构建
构建完成,在out文件夹中可以查看.jar包
c).使用JAR包
在项目中创建lib包,并将jar包复制进来
依次点击右上角的文件->项目结构,然后左侧选择
6.php-java-bridge使用
a).引入JAR包,重启php-java-bridge
将我们生成的JAR包复制到第三大步的(e 中的log配置文件java.ext.dirs的目录下,win+r 输入cmd 然后使用命令netstat -ano |findstr "端口号"
命令查看PID,然后在任务管理器右键结束任务。然后重新运行JavaBridge.jar。
b).PHP引入
将JavaBridge.jar解压,然后进入文件夹,将META-INF文件夹内的java,然后放到和PHP脚本能引入的位置,代码中是同级目录
<?php
ini_set("display_errors",1);
define ("JAVA_HOSTS", "127.0.0.1:8080"); //定义监听的端口,如多个Bridge启动,可通过变量进行切换
require_once("./java/Java.inc"); //引入java,注意目录层级,一定引用正确,才可以
$system = new Java('java.lang.System');
$s = new Java("java.lang.String", "php-java-bridge config...<br><br>");
echo $s;
print 'Java version='.$system->getProperty('java.version').' <br>';
print 'Java vendor=' .$system->getProperty('java.vendor').' <br>';
print 'OS='.$system->getProperty('os.name').' '.
$system->getProperty('os.version').' on '.
$system->getProperty('os.arch').' <br>';
$formatter = new Java('java.text.SimpleDateFormat', "EEEE, MMMM dd, yyyy 'at' h:mm:ss a zzzz");
print $formatter->format(new Java('java.util.Date')).' <br>'.' <br>';
$UploadFile = new Java('com.company.uploadFile');//使用自己的jar包,这里的名称要和你的类文件的【package com.company;】一致
$res = $UploadFile->hello();
var_dump(java_values($res));exit;//使用java_values函数将返回对象转为值类型
d).访问PHP脚本输出
每次jar发生变化,重新载入的时候,JavaBridge.jar必须要杀死重启,否则不会生效。
new自己的jar包的时候,路径名称一定要和自己的包名称一致,否则会引入失败
参考:https://blog.csdn.net/UsbFor/article/details/111569448
https://www.bilibili.com/read/cv17050351/