Integrando o PHP com Java (parte 1)
Lembrando que a intenção do artigo é mostrar como o PHP tem suporte à várias tecnologias.
Requerimentos para plataformas Windows
Java
Tenha o Java2 SDK instalado na sua máquina. A versão atual quando escrevi esse artigo era a seguinte:
http://jdl.sun.com/webapps/download/Display?BundleId=9025&Download+Windows+%28.exe%29.x=21&Download+Windows+%28.exe%29.y=6
PHP
Baixe a DLL (php_java.dll) e o JAR (php_java.jar) correspondente à versão do PHP no site oficial(http://www.php.net/releases.php - Dica baixe a versão Full"php-x.x.x-Win32.zip").
Descomente a seguinte linha no seu php.ini:
Altere as seguintes linhas nesse mesmo arquivo:
java.class.path, é o caminho onde se encontra o JAR (php_java.jar) e suas classes Java.
java.home, é o caminho onde o Java SDK foi instalado.
java.library, é o caminho onde se encontra a Java Virtual Machine (JVM) para rodar as classes Java.
java.library.path, é o caminho onde se encontra a DLL (php_java.dll).
A parte mais chata das configurações acabou, e veremos agora um exemplo passo a passo.
JavaPHP.java:
Salve esse arquivo dentro do diretório que está na configuração do php.ini('java.class.path' - nesse exemplo ficou configurado como "C:\php\java_class").
Essa classe é um exemplo simples de métodos get() e set(). Depois compile sua classe num editor de sua preferência ou abra o DOS e digite:
java_php.php:
Para chamar suas classes Java você precisa usar o seguinte comando:
Se a classe existir (NomeClasse) a variável ($obj) se torna uma instância da mesma e terá acesso aos métodos públicos que contém na classe.
Referências
Java
- Documentação: http://java.sun.com/docs/
- Site: http://java.sun.com
- Editor para desenvolvimento: http://www.eclipse.org/downloads/index.php
PHP
- Integração com Java: http://br.php.net/manual/pt_BR/ref.java.php
- Programação Orientada à Objetos: http://br.php.net/manual/pt_BR/language.oop.php
Espero que tenham gostado do artigo, a parte 2 falará detalhadamente de uma aplicação usando Java, MySQL e PHP.
Sem mais, Rodrigo Rodrigues.
Requerimentos para plataformas Windows
Java
Tenha o Java2 SDK instalado na sua máquina. A versão atual quando escrevi esse artigo era a seguinte:
http://jdl.sun.com/webapps/download/Display?BundleId=9025&Download+Windows+%28.exe%29.x=21&Download+Windows+%28.exe%29.y=6
PHP
Baixe a DLL (php_java.dll) e o JAR (php_java.jar) correspondente à versão do PHP no site oficial(http://www.php.net/releases.php - Dica baixe a versão Full"php-x.x.x-Win32.zip").
Descomente a seguinte linha no seu php.ini:
extension=php_java.dll
Altere as seguintes linhas nesse mesmo arquivo:
[Java] java.class.path = "C:\php\extensions\php_java.jar;C:\php\java_class" java.home = "C:\j2sdk1.4.1\bin" java.library = "C:\j2sdk1.4.1\jre\bin\server\jvm.dll" java.library.path = "C:\php\extensions"
java.class.path, é o caminho onde se encontra o JAR (php_java.jar) e suas classes Java.
java.home, é o caminho onde o Java SDK foi instalado.
java.library, é o caminho onde se encontra a Java Virtual Machine (JVM) para rodar as classes Java.
java.library.path, é o caminho onde se encontra a DLL (php_java.dll).
A parte mais chata das configurações acabou, e veremos agora um exemplo passo a passo.
JavaPHP.java:
public class JavaPHP { private String nome = null; public void setNome(String nome) { this.nome = nome; } public String getNome() { return nome; } }
Salve esse arquivo dentro do diretório que está na configuração do php.ini('java.class.path' - nesse exemplo ficou configurado como "C:\php\java_class").
Essa classe é um exemplo simples de métodos get() e set(). Depois compile sua classe num editor de sua preferência ou abra o DOS e digite:
javac JavaPHP.java
java_php.php:
<?php $javaPHP = new Java('JavaPHP'); $javaPHP->setNome("Java+PHP"); echo "Método do Java = " . $javaPHP->getNome(); ?>
Para chamar suas classes Java você precisa usar o seguinte comando:
<?php $obj = new Java('NomeClasse'); ?>
Se a classe existir (NomeClasse) a variável ($obj) se torna uma instância da mesma e terá acesso aos métodos públicos que contém na classe.
Referências
Java
- Documentação: http://java.sun.com/docs/
- Site: http://java.sun.com
- Editor para desenvolvimento: http://www.eclipse.org/downloads/index.php
PHP
- Integração com Java: http://br.php.net/manual/pt_BR/ref.java.php
- Programação Orientada à Objetos: http://br.php.net/manual/pt_BR/language.oop.php
Espero que tenham gostado do artigo, a parte 2 falará detalhadamente de uma aplicação usando Java, MySQL e PHP.
Sem mais, Rodrigo Rodrigues.
Gostaria de saber se por ser uma "DLL" tem como fazer essa integração no LINUX.
Seria a mesma coisa, seguir os mesmos passos?
Obrigado.
Seria a mesma coisa, seguir os mesmos passos?
Obrigado.
20/06/2006 1:27pm
(~18 anos atrás)
Antes de mais parabéns pelo artigo.
Eu fiz a configuração tal como foi descrita no artigo, mas não consigo por isto a funcionar. Na hora de carregar a página no browser o apache dá um erro e diz que vai fechar.
O Apache HTTP Server encontrou um problema e vai ser encerrado. Lamentamos qualquer inconveniente que isto lhe possa causar.
Se alguém souber como resolver este problema agradecia imenso.
Obrigado.
Eu fiz a configuração tal como foi descrita no artigo, mas não consigo por isto a funcionar. Na hora de carregar a página no browser o apache dá um erro e diz que vai fechar.
O Apache HTTP Server encontrou um problema e vai ser encerrado. Lamentamos qualquer inconveniente que isto lhe possa causar.
Se alguém souber como resolver este problema agradecia imenso.
Obrigado.
15/05/2006 4:06pm
(~18 anos atrás)
Daew Galera,
Tbm fiz toda a configuração, mas quando tento executar o script o windows me retorna o seguinte erro
"A instrução no "0x00000000" fez referência à memória no "0x0000000". A memória não pôde ser "read""
Só está funcionando com o Php 4, mas estou precisando que funcione no php5.
Se poderem me ajudar ficarei muito grato.
Robson Kucki
Tbm fiz toda a configuração, mas quando tento executar o script o windows me retorna o seguinte erro
"A instrução no "0x00000000" fez referência à memória no "0x0000000". A memória não pôde ser "read""
Só está funcionando com o Php 4, mas estou precisando que funcione no php5.
Se poderem me ajudar ficarei muito grato.
Robson Kucki
22/03/2006 11:16am
(~18 anos atrás)
Olá..
Trabalho com PHP há 2 anos. Tenho curso de Java de 2 meses. Ou seja, conheço um pouco as duas linguagens.
Porém, nao estou conseguindo fazer essa integração.
dá um erro do APACHE e pede p/ ser fechado..
Será que alguem pode me ajudar???
Trabalho com PHP há 2 anos. Tenho curso de Java de 2 meses. Ou seja, conheço um pouco as duas linguagens.
Porém, nao estou conseguindo fazer essa integração.
dá um erro do APACHE e pede p/ ser fechado..
Será que alguem pode me ajudar???
25/02/2006 1:36pm
(~19 anos atrás)
Pessoal. Estou com problemas em fazer funcionar o Java+PHP.
Warning: java.lang.ClassNotFoundException: php in C:\Arquivos de programas\Apache Group\Apache2\htdocs\itau_shopline\index.php on line 131
Fatal error: Call to a member function on a non-object in C:\Arquivos de programas\Apache Group\Apache2\htdocs\itau_shopline\index.php on line 132
Configuracoes:
java.class.path = "C:\PHP\extensions\php_java.jar;C:\PHP\java_class"
java.home = "C:\j2sdk1.4.2_09\bin"
java.library = "C:\j2sdk1.4.2_09\jre\bin\server\jvm.dll"
java.library.path = "C:\php\extensions"
Programa Java Instalado:
j2sdk-1_4_2_09-windows-i586-p.exe
Sou leigo em Java e iniciante em PHP.
Se puderem me ajudar. Agradeço desde já
Warning: java.lang.ClassNotFoundException: php in C:\Arquivos de programas\Apache Group\Apache2\htdocs\itau_shopline\index.php on line 131
Fatal error: Call to a member function on a non-object in C:\Arquivos de programas\Apache Group\Apache2\htdocs\itau_shopline\index.php on line 132
Configuracoes:
java.class.path = "C:\PHP\extensions\php_java.jar;C:\PHP\java_class"
java.home = "C:\j2sdk1.4.2_09\bin"
java.library = "C:\j2sdk1.4.2_09\jre\bin\server\jvm.dll"
java.library.path = "C:\php\extensions"
Programa Java Instalado:
j2sdk-1_4_2_09-windows-i586-p.exe
Sou leigo em Java e iniciante em PHP.
Se puderem me ajudar. Agradeço desde já
03/10/2005 9:55am
(~19 anos atrás)
O diretório q vc está rodandos os phps e as classes java tem q ser o mesmo q vc especificou em java.class.path.
No seu caso altere o java.class.path do php.ini para: java.class.path = "C:\Arquivos de programas\EasyPHP\php\extensions\php_java.jar;c:\arquivos de programas\easyphp\www\itaushopline"
No seu caso altere o java.class.path do php.ini para: java.class.path = "C:\Arquivos de programas\EasyPHP\php\extensions\php_java.jar;c:\arquivos de programas\easyphp\www\itaushopline"
02/09/2005 4:04pm
(~19 anos atrás)
Pra quem está tendo esse erro, de uma lida nesse bug:
http://bugs.php.net/bug.php?id=18600
Basicamente o suporte a java é experimental no PHP, e também só funciona direito se o PHP estiver rodando por CGI. Só não me pergunte o porquê disso...
Estava tendo o mesmo erro, o arquivo executava uma ou 2x e depois dava erro... dai mudei o PHP pra CGI e não aconteceu mais.
Abraço a Todos!
http://bugs.php.net/bug.php?id=18600
Basicamente o suporte a java é experimental no PHP, e também só funciona direito se o PHP estiver rodando por CGI. Só não me pergunte o porquê disso...
Estava tendo o mesmo erro, o arquivo executava uma ou 2x e depois dava erro... dai mudei o PHP pra CGI e não aconteceu mais.
Abraço a Todos!
30/08/2005 5:02pm
(~19 anos atrás)
Segue o meu php.ini :
[Java]
java.class.path = "C:\Arquivos de programas\EasyPHP\php\extensions\php_java.jar;C:\WINDOWS\java\trustlib\"
java.home = "C:\j2sdk1.4.2_04\bin"
java.library = "C:\j2sdk1.4.2_04\jre\bin\server\jvm.dll"
java.library.path = "C:\Arquivos de programas\EasyPHP\php\extensions"
Fiz tudo como recomendado, mas o resultado da minha pagina é :
Warning: java.lang.ClassNotFoundException: Itaucripto.class in c:\arquivos de programas\easyphp\www\itaushopline\index.php on line 117
Fatal error: Call to a member function on a non-object in c:\arquivos de programas\easyphp\www\itaushopline\index.php on line 123
Já fiz de tudo para fazer com que o Java encontre o path da classe ... mas naum tem jeito ... alguma dica ?
[Java]
java.class.path = "C:\Arquivos de programas\EasyPHP\php\extensions\php_java.jar;C:\WINDOWS\java\trustlib\"
java.home = "C:\j2sdk1.4.2_04\bin"
java.library = "C:\j2sdk1.4.2_04\jre\bin\server\jvm.dll"
java.library.path = "C:\Arquivos de programas\EasyPHP\php\extensions"
Fiz tudo como recomendado, mas o resultado da minha pagina é :
Warning: java.lang.ClassNotFoundException: Itaucripto.class in c:\arquivos de programas\easyphp\www\itaushopline\index.php on line 117
Fatal error: Call to a member function on a non-object in c:\arquivos de programas\easyphp\www\itaushopline\index.php on line 123
Já fiz de tudo para fazer com que o Java encontre o path da classe ... mas naum tem jeito ... alguma dica ?
17/06/2005 3:42pm
(~19 anos atrás)
==== ATENÇÃO ====
NÃO SE ESQUEÇAM QUE O ARQUIVO A SER USADO DEVERÁ SER JavaPHP.CLASS e não JavaPHP.JAVA.
ISSO DEVE ESTAR CONFUNDINDO MUITA GENTE!
Qual a diferença entre os 2? O .class é o arquivo já compilado e o .java é apenas o código fonte.
Como fazer para compilar o arquivo JavaPHP.java?
Primeiramente será preciso instalar o J2SDK, que é o conjunto de arquivos e bibliotecas para desenvolvedores Java.
WINDOWS> http://192.18.97.133/ECom/EComTicketServlet/BEGIN2D31F789CD53D97D2E44CDEDD7BCF156/-2147483648/840154263/1/606770/606626/840154263/2ts+/westCoastFSEND/j2sdk-1.4.2_08-oth-JPR/j2sdk-1.4.2_08-oth-JPR:3/j2sdk-1_4_2_08-windows-i586-p.exe
LINUX>
http://192.18.97.133/ECom/EComTicketServlet/BEGIN2D31F789CD53D97D2E44CDEDD7BCF156/-2147483648/840154263/1/606770/606638/840154263/2ts+/westCoastFSEND/j2sdk-1.4.2_08-oth-JPR/j2sdk-1.4.2_08-oth-JPR:4/j2sdk-1_4_2_08-linux-i586-rpm.bin
Em seguida, vá ao prompt de comando (iniciar>executar>cmd) e vá até a pasta onde está o arquivo javac.exe (ex.: C:\j2sdk\bin)
em seguida digite: javac C:\PastadoSeuArquivoJava\JavaPHP.java
Na pasta do j2sdk (ex.: C:\j2sdk\bin) será criado um novo arquivo... o JavaPHP.class
Prontinho... já temos nosso arquivo Java compilado.
É ESTE ARQUIVO QUE O PHP PROCURA PARA ACESSAR! JavaPHP.class e não .java!!!
Agora copie o arquivo JavaPHP.class para a pasta onde está o arquivo JavaPHP.java, conforme este artigo estava explicando e... BINGO! ASTA LA VISTA BABY!
[]s
Gustavo Villa.
NÃO SE ESQUEÇAM QUE O ARQUIVO A SER USADO DEVERÁ SER JavaPHP.CLASS e não JavaPHP.JAVA.
ISSO DEVE ESTAR CONFUNDINDO MUITA GENTE!
Qual a diferença entre os 2? O .class é o arquivo já compilado e o .java é apenas o código fonte.
Como fazer para compilar o arquivo JavaPHP.java?
Primeiramente será preciso instalar o J2SDK, que é o conjunto de arquivos e bibliotecas para desenvolvedores Java.
WINDOWS> http://192.18.97.133/ECom/EComTicketServlet/BEGIN2D31F789CD53D97D2E44CDEDD7BCF156/-2147483648/840154263/1/606770/606626/840154263/2ts+/westCoastFSEND/j2sdk-1.4.2_08-oth-JPR/j2sdk-1.4.2_08-oth-JPR:3/j2sdk-1_4_2_08-windows-i586-p.exe
LINUX>
http://192.18.97.133/ECom/EComTicketServlet/BEGIN2D31F789CD53D97D2E44CDEDD7BCF156/-2147483648/840154263/1/606770/606638/840154263/2ts+/westCoastFSEND/j2sdk-1.4.2_08-oth-JPR/j2sdk-1.4.2_08-oth-JPR:4/j2sdk-1_4_2_08-linux-i586-rpm.bin
Em seguida, vá ao prompt de comando (iniciar>executar>cmd) e vá até a pasta onde está o arquivo javac.exe (ex.: C:\j2sdk\bin)
em seguida digite: javac C:\PastadoSeuArquivoJava\JavaPHP.java
Na pasta do j2sdk (ex.: C:\j2sdk\bin) será criado um novo arquivo... o JavaPHP.class
Prontinho... já temos nosso arquivo Java compilado.
É ESTE ARQUIVO QUE O PHP PROCURA PARA ACESSAR! JavaPHP.class e não .java!!!
Agora copie o arquivo JavaPHP.class para a pasta onde está o arquivo JavaPHP.java, conforme este artigo estava explicando e... BINGO! ASTA LA VISTA BABY!
[]s
Gustavo Villa.
01/05/2005 11:23am
(~19 anos atrás)
extension=php_java.dll para descomentar e nem
[Java]
java.class.path = "C:\php\extensions\php_java.jar;C:\php\java_class"
java.home = "C:\j2sdk1.4.1\bin"
java.library = "C:\j2sdk1.4.1\jre\bin\server\jvm.dll"
java.library.path = "C:\php\extensions"
para alterar.
Então eu adicioneu na mão:
.
.
.
;extension=php_sybase_ct.dll
;extension=php_tidy.dll
;extension=php_xmlrpc.dll
;extension=php_xsl.dll
extension=php_java.dll
e
.
.
.
[Tidy]
; The path to a default tidy configuration file to use when using tidy
;tidy.default_config = /usr/local/lib/php/default.tcfg
; Should tidy clean and repair output automatically?
; WARNING: Do not use this option if you are generating non-html content
; such as dynamic images
tidy.clean_output = Off
[Java]
java.class.path = "D:\CPqD\php\ext\php_java.jar;D:\CPqD\php\java_class"
java.home = "C:\Arquivos de programas\Java\jdk1.5.0_07\bin"
java.library = "C:\Arquivos de programas\Java\jdk1.5.0_07\jre\bin\server\jvm.dll"
;java.library.path = "D:\CPqD\php\ext"
Quando instalei o php, ele veio com uma pasta ext, mas essa não tem a php_java.dll, então baixei baixei o pecl-5.1.6-Win32.zip e coloquei as bibliotecas na em uma pasta extensions que eu criei na pasta do php e copiei todas elas na pasta ext também.
Quando tento executar o php que chama o java dá um erro no apache e vem aquela frase do windows dizendo que ele deve ser fechado.