php 에서 자신의 자바 프로그램 을 호출 하 는 방법 에 대한 상세 한 설명

12045 단어 php호출자바
본 고의 실례 는 php 가 자신의 자바 프로그램 을 호출 하 는 실현 방법 을 설명 하 였 다.여러분 께 참고 하도록 공유 하 겠 습 니 다.구체 적 으로 는 다음 과 같 습 니 다.
처음에 jdk 를 담 으 려 면 이 건 말 할 필요 가 없습니다.저 는 자바 ee 5+jdk 를 담 았 습 니 다.
1.다운 로드 된 php-java-bridge5.2.2_j2ee.zip 압축 해제,그 안에 자바 Bridge.war 가 있 습 니 다.직접 winrar 로 열 려 있 습 니 다.WEB-INF/lib/자바 Bridge.jar 에 가서 이 jar 가방 을 phop 디 렉 터 리 의 ext/아래로 복사 하 십시오.
2.war 가방 을 열 면 자바 폴 더 가 있 습 니 다.PHP 항목 에 복사 하 십시오.예 를 들 어/demo/자바
3.현재 버 전 은 VMBridge 입 니 다.phop 에서 자바 류 를 호출 하려 면 자바 Bridge 를 먼저 시작 해 야 합 니 다.
명령 행 에서 자바 Cjar 자바 브리지.jar 를 호출 하거나 자바 브리지.jar 를 두 번 클릭 하여 팝 업 창 에서 감청 포트 8080 을 선택 하 십시오.
나중에 시작 하기 편 하도록 ext/아래 에 bat 파일 을 새로 만 들 었 습 니 다.내용 은 다음 과 같 습 니 다.

@echo off
start javaw -jar JavaBridge.jar

저장 후 시작 을 두 번 누 르 면 vmbridge port 기본 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 version=1.6.0_10
Java vendor=Sun Microsystems Inc.
OS=Windows Vista 6.0 on x86
, 23, 2008 at 4:31:49
사용자 정의 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>
"; echo "My java method reports: <b>" . $myj->whatisfoo() . "</b><br>
"; ?>
브 라 우 저 에서 보기http://localhost/demo/index2.php
방법 2:phpjava.dll 은 php.ini 를 설정 해 야 합 니 다.새 php-java-bridge 에는 dll 파일 이 없습니다.
우선 PHP 와 Apache 서버 및 JDK(or JRE 도 가능)가 설치 되 어 있 는 지 확인 하 십시오.
인터넷 에서 php-java-bridge 다운로드(자체 적 으로 착용 점 찾기 orhttp://sourceforge.net/project/showfiles.php?group_id=117793)
다운로드 한 php-java-bridge 압축 을 풀 고 압축 을 풀 면 폴 더 에 자바 브리지.war 가 있 습 니 다.이 자바 브리지.war 압축 을 풀 수 있 습 니 다(win rar 로 풀 수 있 습 니 다)
압축 을 풀 면 WEB-INF 폴 더 의 cgi 폴 더 에서 자바-x86-windows.dll 을 찾 을 수 있 고,WEB-INF 폴 더 의 lib 폴 더 에서 자바 Bridge.jar 를 찾 을 수 있 습 니 다.
자바-x86-windows.dll 과 자바 브리지.jar}을 PHP 의 외 장 폴 더 로 만 듭 니 다(제 쪽 은 C:/AppServphp/ext).그리고 자바-x86-windows.dll 을 pp 로 바 꿉 니 다.java.dll
php.ini 파일 수정
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"

아파 치 를 다시 시작 해서 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

마지막 두 번 째 자바 status 의 상태 가 not running 인지 확인 하 세 요.running<-대표 자바 Bridge.jar 가 시작 되 었 다 면 phop-자바-bridge 를 정식으로 사용 할 수 있 습 니 다.
시작 하지 않 으 면 실행:
켜 질 때마다 수 동 으로 자바 브리지 를 시작 할 수 는 없 으 니까.
그래서 우 리 는 일괄 처 리 를 썼 는데,내용 은 다음 과 같다.

@echo off
start javaw -jar JavaBridge.jar

phpJavaBridge.bat 로 저장 하고 PHP 의 외 장 폴 더 에 저장 합 니 다.(여 기 는 C:AppServ/php/ext)
이 파일 을 시작 하 는 지름길 로 만 듭 니 다.(여 기 는 C:/Documents and Settings/All Users/시작/기능 표/프로그램 시작)
이렇게 되면 나중에 켜 질 때마다 C:AppServphpext 폴 더 의 phpJavaBridge.bat 가 자동 으로 시 작 됩 니 다.
단순 범례

<?
$system=new Java('java.lang.System');
echo "java  ".$system->getProperty('java.version')."<BR>";
echo "    ".$system->getProperty('java.vendor')."<BR>";
echo "      ".$system->getProperty('os.name')."<BR>";
echo "java  ".$system->getProperty('os.version')."<BR>";
echo "java  ".$system->getProperty('os.arch')."<BR>";
?>

또는 php-java-bridge 에서 test.php 를 찾 으 면http://localhost/test.php효 과 를 볼 수 있 습 니 다.

<?php
$system=new Java("java.lang.System");
print "Java version=".$system->getProperty("java.version")." <br>";
?>


[java]
extension=PHP_java.dll
java.library.path=c:webPHP4extensions
java.class.path="c:webPHP4extensionsjdk1.2.2PHP_java.jar;c:myclasses" 

PHP.INI 에 extension=PHP 추가java.dll,그리고[java]에서 java.class.path 를 설정 하여 PHP 를 가리 키 도록 합 니 다.java.jar,만약 당신 이 새로운 JAVA 클래스 를 사용한다 면,당신 도 이 경 로 를 저장 해 야 합 니 다.이 예 에서,우 리 는 c:myclasses 라 는 디 렉 터 리 를 사용 합 니 다.
테스트 환경,다음 PHP 파일 생 성:

<?php
$system = new Java("java.lang.System");
print "Java version=".$system->getProperty("java.version")." <br>n";
print "Java vendor=".$system->getProperty("java.vendor")." <p>nn";
print "OS=".$system->getProperty("os.name")." ".
$system->getProperty("os.version")." on ".
$system->getProperty("os.arch")." <br>n";
$formatter = new Java("java.text.SimpleDateFormat","EEEE,
MMMM dd, yyyy 'at' h:mm:ss a zzzz");
print $formatter->format(new Java("java.util.Date"))."n";
?> 

만약 당신 이 정확하게 설치 했다 면 다음 과 같은 정 보 를 볼 수 있 을 것 입 니 다.
Java version=1.2.2
Java vendor=Sun Microsystems Inc.
OS=Windows 95 4.10 on x86
Wednesday, October 18, 2000 at 10:22:45 AM China Standard Time
JAVA 를 어떻게 호출 하 는 지 이해 하 는 것 이 중요 합 니 다.다음 단계 에 우 리 는 자신의 JAVA 파일 을 만 들 고 PHP 로 호출 해 야 합 니 다.JAVA 파일 의 java.class.path 는 매우 중요 합 니 다.
당신 의 JAVA 클래스 를 만 들 고 사용 합 니 다.[대소 문자 주의]
당신 만 의 JAVA 류 를 만 드 는 것 은 매우 쉽 습 니 다.phptest.java 파일 을 새로 만 듭 니 다.java.class.path 디 렉 터 리 아래 에 놓 으 십시오.[c:\myclasses]파일 내용 은 다음 과 같 습 니 다.

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));
   }
  }
 }
}

이 파일 을 만 든 후,우 리 는 이 파일 을 컴 파일 하고,DOS 명령 행 에서 javac phptest.java 명령 을 사용 해 야 합 니 다.
이 JAVA 클래스 를 PHP 로 테스트 하기 위해 웹 디 렉 터 리 아래 에 phptest.php 파일 을 만 듭 니 다.내용 은 다음 과 같 습 니 다.

<?php
$myj = new Java("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>
"; echo "My java method reports: <b>" . $myj->whatisfoo() . "</b><br>
"; ?>
이러한 경고 메 시 지 를 받 으 면 자바.lang.Class NotFoundation Exception error 는 phoptest.class 파일 이 자바.class.path 디 렉 터 리 에 없 음 을 의미 합 니 다.
주의해 야 할 것 은 JAVA 는 강제 형식 언어 입 니 다.PHP 는 그렇지 않 습 니 다.그러면 우 리 는 그것들 을 융합 시 킬 때 오류 가 발생 하기 쉬 우 므 로 JAVA 에 변 수 를 전달 할 때 좋 은 변수의 유형 을 정확하게 지정 해 야 합 니 다.예 를 들 어$myj->foo=(string)12345678;or $myj->foo = "12345678″;
이것 은 아주 작은 예 일 뿐 입 니 다.당신 은 자신의 JAVA 류 를 만 들 고 PHP 를 사용 하여 그것 을 잘 호출 할 수 있 습 니 다!관건 은 java.class.path 디 렉 터 리 의 중요성 을 이해 하 는 데 있다.
더 많은 PHP 관련 내용 에 관심 이 있 는 독자 들 은 본 사이트 의 주 제 를 볼 수 있다.
본 논문 에서 말 한 것 이 여러분 의 PHP 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.

좋은 웹페이지 즐겨찾기