이 글에서는 PHP가 자체 Java 프로그램을 호출하는 방법을 주로 소개합니다. 타사 jar 패키지를 기반으로 Java 프로그램을 호출하는 두 가지 방법과 dll 동적 링크 라이브러리 파일 확장자를 사용하여 필요한 Java를 호출하는 방법을 자세히 분석합니다.
자세한 내용은 다음과 같습니다.
물론 처음에는 jdk를 설치해야 합니다. 저는 java ee 5+jdk
를 설치했습니다. 1. 다운로드한 php-java-bridge_5.2.2의 압축을 풉니다. _j2ee.zip이 있습니다. JavaBridge.war winrar로 직접 열고 WEB-INF/lib/JavaBridge.jar로 이동하여 이 jar 패키지를 php 디렉토리의 ext/ 디렉토리에 복사하세요.
2. 해당 패키지에 java 폴더가 있습니다. 이를 모두 PHP 프로젝트(예: /demo/java)에 복사하세요. 현재 버전은 VMBridge입니다. , 먼저 JavaBridge를 시작해야 합니다.
명령줄에서 java –jar JavaBridge.jar을 호출하거나 JavaBridge.jar을 두 번 클릭하고 팝업 창에서 수신 포트 8080을 선택합니다.
향후 시작의 편의를 위해 다음을 만들었습니다. ext/ 아래에 다음 내용이 포함된 새 bat 파일을 만듭니다. :
@echo off start javaw -jar JavaBridge.jar
저장한 후 두 번 클릭하여 시작하면 vmbridge 포트 기본값 8080을 선택하라는 메시지 상자가 표시됩니다. ok를 클릭하면 됩니다
4. /demo/ 아래에 다음 내용이 포함된 새 test.php:
<?php require_once("java/Java.inc"); header("content-type:text/html; charset=utf-8″); // get instance of Java class java.lang.System in PHP $system = new Java('java.lang.System'); $s = new Java("java.lang.String", "php-java-bridge config…<br><br>"); echo $s; // demonstrate property access 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>'; // java.util.Date example $formatter = new Java('java.text.SimpleDateFormat', "EEEE, MMMM dd, yyyy 'at' h:mm:ss a zzzz"); print $formatter->format(new Java('java.util.Date')); ?>
5. Apache를 시작하고 브라우저에서 http://localhost/demo/test.php를 확인하세요
다음 정보가 표시됩니다.
코드는 다음과 같습니다:php-java-bridge config…
Java 버전=1.6.0_10Java Vendor=Sun Microsystems Inc.
OS=Windows Vista 6.0 on x86
11월 23일 일요일 , 2008년 오후 4시 31분 49초(중국 표준시)
Custom JAR:
package ttt; public class phptest{ /** * A sample of a class that can work with PHP * NB: The whole class must be public to work, * and of course the methods you wish to call * directly. * * Also note that from PHP the main method * will not be called */ public String foo; /** * Takes a string and returns the result * or a msg saying your string was empty */ public String test(String str) { if(str.equals("")) { str = "Your string was empty. "; } return str; } /** * whatisfoo() simply returns the value of the variable foo. */ public String whatisfoo() { return "foo is " + foo; } /** * This is called if phptest is run from the command line with * something like * java phptest * or * java phptest hello there */ public static void main(String args[]) { phptest p = new phptest(); if(args.length == 0) { String arg = ""; System.out.println(p.test(arg)); }else{ for (int i = 0; i < args.length; i++) { String arg = args[i]; System.out.println(p.test(arg)); } } } }
JAR로 생성하여 D 드라이브에 복사합니다.
/demo/index2.php
<? require_once("java/Java.inc"); java_require("D://1.jar"); $myj = new Java("ttt.phptest"); echo "Test Results are <b>" . $myj->test("Hello World") . "</b>"; $myj->foo = "A String Value"; echo "You have set foo to <b>" . $myj->foo . "</b><br>\n"; echo "My java method reports: <b>" . $myj->whatisfoo() . "</b><br>\n"; ?>
브라우저에서 http://localhost/demo/index2.php 보기
방법 2: php_java.dll은 새 버전인 php.ini를 구성해야 합니다. php- java-bridge에 대한 dll 파일이 없습니다먼저 PHP 및 Apache 서버와 JDK(또는 JRE도 허용됨)가 설치되어 있는지 확인하세요
온라인으로 가서 php-java-bridge를 다운로드하세요(직접 찾으세요) 또는 http://sourceforge.net/project/showfiles.php?group_id=117793 )
다운로드한 php-java-bridge의 압축을 풀어보세요. 압축을 풀면 폴더에 JavaBridge.war이 있을 것이고, JavaBridge의 압축을 풀어보세요. war 같은 방식으로 (Win rar 분해)
압축 해제 후 WEB-INF 폴더의 cgi 폴더에서 java-x86-windows.dll을 찾을 수 있고, WEB-INF 폴더의 lib 폴더에서 JavaBridge.jar를 찾을 수 있습니다
Java 배치 - x86-windows.dll 및 JavaBridge.jar을 PHP 플러그인 폴더(제 경우에는 C:/AppServphp/ext)에 복사하고 java-x86-windows.dll을 php_java.dll로 변경합니다
php.ini에 원래 아래와 같은 내용이 없다면 직접 추가해 주세요. 원래 다음과 같은 내용이 있다면 다음과 같이 수정해주세요. [저는 JDK를 사용하고 있습니다]
Extension=php_java.dll[Java] ;java.java = "C:\jdk1.6.0_13\bin\java" java.class.path = "D:\php\ext\JavaBridge.jar;c:\myclasses" c:\myclasses可自定义,用来存放自己写的JAVA文件 java.java_home = "C:\jdk1.6.0_13\jre" java.library = "d:\jdk1.2.2\jre\bin\server\jvm.dll" java.library.path = "D:\php\ext"
Apache를 다시 시작하고 phpinfo
java java support Enabled java bridge 3.0.8 java.java_home C:\jdk1.6.0_13 java.java C:\jdk1.6.0_13\bin\java java.log_file <stderr> java.log_level no value (use backend's default level) java.ext_java_compatibility Off java command C:\jdk1.6.0_13\bin\java -Djava.library.path=D:\php\ext -Djava.class.path=D:\php\ext/JavaBridge.jar -Djava.awt.headless=true php.java.bridge.JavaBridge INET_LOCAL:0 2 java status running java server 9267
를 확인하여 두 번째 Java 상태 항목이 실행되고 있지 않은지 확인하세요(이는 JavaBridge.jar을 시작하지 않았기 때문입니다). 실행 중이라면 e0d19972c760f6fea197c41603d0b8eefoo = (string) 12345678; or $myj->foo = "12345678″;
这只是一个很小的例子,你可以创建你自己的 JAVA 类,并使用 PHP 很好的调用它!关键在于理解java.class.path目录的重要性。
总结:以上就是本篇文的全部内容,希望能对大家的学习有所帮助。
相关推荐:
PHP基于pdo的数据库操作类【可支持mysql、sqlserver及oracle】
위 내용은 PHP가 자체 Java 프로그램을 호출하는 방법과 예에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!