>  기사  >  백엔드 개발  >  PHP가 자체 Java 프로그램을 호출하는 방법과 예에 대한 자세한 설명

PHP가 자체 Java 프로그램을 호출하는 방법과 예에 대한 자세한 설명

墨辰丷
墨辰丷원래의
2018-06-02 11:32:005945검색

이 글에서는 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(&#39;java.lang.System&#39;);
$s = new Java("java.lang.String", "php-java-bridge config…<br><br>");
echo $s;
// demonstrate property access
print &#39;Java version=&#39;.$system->getProperty(&#39;java.version&#39;).&#39; <br>&#39;;
print &#39;Java vendor=&#39; .$system->getProperty(&#39;java.vendor&#39;).&#39; <br>&#39;;
print &#39;OS=&#39;.$system->getProperty(&#39;os.name&#39;).&#39; &#39;.
$system->getProperty(&#39;os.version&#39;).&#39; on &#39;.
$system->getProperty(&#39;os.arch&#39;).&#39; <br>&#39;;
// java.util.Date example
$formatter = new Java(&#39;java.text.SimpleDateFormat&#39;,
"EEEE, MMMM dd, yyyy &#39;at&#39; h:mm:ss a zzzz");
print $formatter->format(new Java(&#39;java.util.Date&#39;));
?>

5. Apache를 시작하고 브라우저에서 http://localhost/demo/test.php를 확인하세요

다음 정보가 표시됩니다.


코드 복사

코드는 다음과 같습니다:php-java-bridge config…

Java 버전=1.6.0_10

Java 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 파일 수정

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&#39;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实现支付宝在线支付接口开发详解

PHP基于pdo的数据库操作类【可支持mysql、sqlserver及oracle】

php实现压缩合并js的方法

위 내용은 PHP가 자체 Java 프로그램을 호출하는 방법과 예에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.