【问题标题】:How to call custom java methods from PHP?如何从 PHP 调用自定义 java 方法?
【发布时间】:2012-04-29 13:16:39
【问题描述】:

我是 PHP 和 Java 的新手。目前我正在开发一个在 PHP 代码中调用 java 类及其方法的项目。我正在为此创建一个概念证明。问题是我无法连接我在 java 中创建的自定义类。更重要的是,我不知道该怎么做。我使用 java.inc 和 javabridge.jar 文件连接到系统类,但无法连接到简单类。 我遵循的步骤是:

创建了一个 java 包,名为 clsForPHP 的类,它有一个 sum() 方法,它接受 2 个参数并返回整数值。 (这是使用 MyEclipse IDE 创建的) 现在我试图从 PHP 调用这个函数。我已将包含该包的 jar 文件复制到 PHP 项目。 (Eclipse-Helios 是 IDE) $d= new java("clsForPHP.class");

请帮忙!!我进行了很多搜索,但无法找到合适的解决方案。我认为应该将这个包添加到 java.inc 文件中,但我不知道该怎么做。

【问题讨论】:

  • 为什么不为你的 java 类打开一个 web 服务,然后你应该能够以任何语言使用它们。
  • Pushpesh,该链接描述了标准的 java 类。但我想使用自定义 java 类。我能够连接到标准的 java 类。

标签: php php-java-bridge


【解决方案1】:

首先在你的 Unix 机器上安装 Tomcat6 和 Java。很可能您的 Tomcat 将在 8080 端口上。现在从http://php-java-bridge.sourceforge.net/pjb/ 下载JavaBridge.war 解压缩它。然后从 WEB-INF/lib 文件夹中复制 JavaBridge.jar 、php-servlet.jar 和 php-script.jar 到 Tomcat 的 lib 文件夹中。然后将 JavaBridge.war 复制到您的 Tomcat6 webapps 文件夹中并重新启动您的 tomcat6 服务,该服务将在您的 webapps 中自动部署 JavaBridge 文件夹

现在尝试浏览http://localhost:8080/JavaBridge/。如果您开始工作而不是安装 PHP/Java Bridge。第一部分结束。

现在在您的 apache 中制作测试页面,如下所示

<?php
      require_once("http://localhost:8080/JavaBridge/java/Java.inc");
      echo java("java.lang.System")->getProperties();
?>

并运行它。如果它有效,那么您可以开始工作。如果它不起作用,那么您的 php.ini 文件有问题。尝试在您的 php.ini 中设置 allow_url_once=on。

现在只需将您的 java jar 文件复制到 tomcat /webapps/JavaBridge/WEB-INF/lib/ 文件夹中 并且总是在页面中您希望 java 工作的地方添加以下行

require_once("http://localhost:8080/JavaBridge/java/Java.inc");
$yourObj = Javav("your java class");
$yourObj->yourMethod();
$yourObj->setProperty("xxx");

希望对您有所帮助。

如果仍有问题,请回来。

是的,它会抛出错误,因为您一定没有复制您的 java 编译文件,可能是您在 PHP / Java Bridge 中的 jar 文件。

您可以通过以下两种方式进行操作

  1. 如果你已经定义了你的 CATALINA_HOME 然后复制 $CATALINA_HOME/webapps/JavaBridge/WEB-INF/lib
  2. 如果你还没有定义你的 CATALINA_HOME 然后复制 /var/lib/tomcat6/webapps/webapps/JavaBridge/WEB-INF/lib

我告诉它的路径假设您已经安装了 tomcat6,可能是您的 tomcat webapps 文件夹可能在不同的路径中。

【讨论】:

  • 如果我使用 Zend Apache 服务器,是否需要做任何更改?我能够成功执行java("java.lang.System")-&gt;getProperties();。我已将它放在本地 phpProject 文件夹中。但是,Javav("myClass"); 无法识别。它抛出“调用未定义的函数 Javav()”。
  • 这是我的错误:我忘记通知我在使用 Win7 作为操作系统的本地系统中设置它。这有什么区别吗?我正在为我的 poc 使用这个 javabridge,它只被一个项目(poc 应用程序)使用。
  • 比我在 Windows 7 中所说的更准确。另外,在继续我的指令之前,在您的 PC 上安装 Apache
  • @Milind,我根据您的指示成功安装了 javabridge,但我的问题是,当它运行 php 文件时,它会在命令提示符 (catalina_start.bat) 中打印结果。我想在网页内打印结果。我该如何解决这个问题?
  • @Tharu。请你告诉我你在哪一步卡住了
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-31
  • 1970-01-01
  • 2017-08-10
  • 1970-01-01
  • 1970-01-01
  • 2016-12-24
相关资源
最近更新 更多