我无法正确设置Php-Java Bridge
设置。
我将解释我所做的事情。
SO FAR SO GOOD
现在我的问题从这里开始,当我尝试从php访问java类文件时。我创建了一个示例test.php
并将以下代码放入其中。
<?php
require_once("http://example.com:portnumber/JavaBridge/java/Java.inc");
$System = java("java.lang.System");
echo $System->getProperties(); //This Part echo's correctly and shows the data so it means i can access Java.inc Correctly
$path_e24class = getcwd(). '/e24PaymentPipe.class'; //This part fails both test.php and java class file e24PaymentPipe.class are in the same directory in publich_html folder
java_require($path_e24class);
$pipe = new Java("e24PaymentPipe");
$pipe->setAction("1");
?>
我的网站内容位于public_html文件夹中,WAR文件部署在私有jvm中。
这些是我收到的错误消息。
1) Warning: java_require() not supported anymore. Please use tomcat or jee hot deployment instead
Fatal error: Uncaught [[o:Exception]:"java.lang.Exception: CreateInstance failed: new e24PaymentPipe. Cause: java.lang.ClassNotFoundException: e24PaymentPipe VM: 1.6.0_22@http://java.sun.com/" at: #-10
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1358) #-9
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1204) #-8
java.lang.Class.forName0(Native Method) #-7
java.lang.Class.forName(Class.java:247) #-6
php.java.bridge.Util.classForName(Util.java:1518) #-5
php.java.bridge.JavaBridge.CreateObject(JavaBridge.java:445) #-4
php.java.bridge.Request.handleRequest(Request.java:458) #-3
php.java.bridge.Request.handleRequests(Request.java:500) #-2
php.java.bridge.http.ContextRunner.run(ContextRunner.java:145) #-1
php.java.bridge.ThreadPool$Delegate.run(ThreadPool.java:60) #0
http://example.com:portnumber/JavaBridge/java/Java.inc(232): java_ThrowExceptionProxyFactory->getProxy(3, 'java.util.Prope...', 'T', false) #1
最后我对java不太了解。所以我被困在这里不知道该怎么做。
答案 0 :(得分:3)
这是您可以遵循的一步一步的tutorial,它显示了所需的一切!这有点旧(2007年),但不久前帮了我。
还有另一种选择。您可以安装Apache Tomcat并在那里部署您的战争。只要您尊重端口设置,您可以在同一台计算机上同时运行httpd,同时运行多个tomcat实例。您甚至可以使用Apache httpd。
将它们放在前面答案 1 :(得分:2)
你可以试试这个:
<?php require_once("JavaBridge/java/Java.inc");
try {
$hd = new java("hdfs.HDFS");
$hd->get("hdfs://master:9000/user/hadoop/test-in/logo_cn.png", "/home/hadoop/1.png");
} catch (JavaException $ex) { echo "An exception occured: "; echo $ex; echo "<br>\n";}
?>
答案 2 :(得分:2)
您可以使用适用于php 5.3的此php implementation on github。
有关详细信息,请参阅git自述文件中的信用。
答案 3 :(得分:0)
你可以试试这个;将JavaBridge.jar放在tomcat的lib文件夹中,例如Apache的Tomcat的7.0.12 / lib中。
重新启动tomcat服务器,然后
$pipe = new java("com.aciworldwide.commerce.gateway.plugins.e24PaymentPipe");
$pipe->setAction("1");
这样我创建了对象的php版本。
答案 4 :(得分:0)
为什么不将e24PaymentPipe类放在Java应用程序的类路径中,并跳过以下两行:
// $path_e24class = getcwd(). '/e24PaymentPipe.class';
// java_require($path_e24class);
$pipe = new java("fully.qualified.classpath.e24PaymentPipe");
您正在混合PHP端和Java端操作。理论上,java_require(不推荐使用)被设计为在Java端工作。您正在指定PHP侧路径。
答案 5 :(得分:0)
使用pure PHP implementation e24PaymentPipe库可以让您自己大为悲伤。
的声明强> 的
链接是我库的github repo,但我没有写。请参阅自述文件以获取原始学分。