×

php使用php-java-bridge调用java方法(依赖其他的jar包)

chen chen 发表于2021-07-27 22:23:29 浏览749 评论0

抢沙发发表评论

首先安装  jdk8u202x64(jdk-8u202-windows-x64.exe)
设置环境变量
JAVA_HOME C:\Program Files\Java\jdk1.8.0_202
CLASS_PATH   .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;
PAth ;%JAVA_HOME%\bin;

JavaBridge.zip

1、去http://php-java-bridge.sourceforge.net/pjb/download.php下载 JavaBridge.jar,Java.inc(新版的 在jar文件中)两个文件即可(不用下载JavaBridge.war去tomcat解压);
2、对JavaBridge.jar解压(我常用7z,rar没试过),修改解压出来的META-INF/MANIFEST.MF,在Class-Path: log4j.jar后加入依赖的包,比如我需要加lib/httpclient.jar,最后是这样的
Class-Path: log4j.jar lib/httpclient-4.1.3.jar
(注意,依赖的jar包,多个jar之间是用空格分隔,还需要注意引用的路径是相对路径)
3、将修改的好的文件重新打包成jar
     3.1  先命令行cd到jar的解压包目录
      3.2 执行:jar -cMf JavaBridge.jar .   (意思就是把当前目录下的文件都打进JavaBridge.jar,并且不生成新的清单文件)


4、整个javabridge的文件结构如下图:
5、运行javabridge
执行命令: java -jar JavaBridge.jar SERVLET_LOCAL:8080
其中端口号找到本机未使用的1024以上的端口号即可
6、php端验证,新建javabridge.php文件
<?php
define("JAVA_HOSTS", "127.0.0.1:8080");
//此处端口与第五步的端口对应
define("JAVA_LOG_LEVEL", 2);
require_once "Java.inc";
//将第一步的下载的Java.inc与当前编辑的php文件放在同一层目录
java_set_file_encoding("UTF-8");
try {
    $props = java("java.lang.System")->getProperties();
    $array = java_values($props);
    foreach($array as $k=>$v) {
        echo "$k=>$v"; echo "<br>\n";
}
    echo "<br>\n";
    class MyClass {
        function toString() { return "hello PHP from Java!"; }
}
    $javaObject = java_closure(new MyClass());
    echo "PHP says that Java says: "; echo $javaObject;  echo "<br>\n";
    echo "<br>\n";
    echo java("php.java.bridge.Util")->VERSION; echo "<br>\n";
} catch (JavaException $ex) {
    echo "An exception occured: "; echo $ex; echo "<br>\n";
}
7、javabridge.php文件目录下执行  php javabridge.php,输出信息即可证明php调用java是ok的,现在可以调用java下的类和方法了,enjoy!
8,我写的pdf
<?php
define("JAVA_HOSTS", "127.0.0.1:8181");
define("JAVA_LOG_LEVEL", 2);
require_once "Java.inc";
//将第一步的下载的Java.inc与当前编辑的php文件放在同一层目录
java_set_file_encoding("UTF-8");
$pdf= java("pdfParse.cn.pdf.parse.PDFReaderUtil")->readReceiptPdf("./fp.pdf");
print_r(java_values($pdf));
?>


群贤毕至

访客