O eco4planet é um buscador que utiliza o sistema Google™ Pesquisas Personalizadas que tráz a qualidade das pesquisas Google agregando consciência ambiental. O buscador utiliza predominantemente a cor preta garando assim uma economia de energia de até 20% comparando com o buscador de tela branca. De acordo com site do eco4planet:

Considerando as mais de 2,55 bilhões de buscas diárias realizadas no Google™ com tempo médio suposto em 10 segundos por pesquisa e a proporção de monitores por tecnologia utilizada, teríamos com um buscador de fundo preto a economia anual de mais de 7 Milhões de Kilowatts-hora! Esse valor equivale à:

  • Mais de 63 milhões de televisores em cores desligados por 1 hora;
  • Mais de 77 milhões de geladeiras desligadas por 1 hora;
  • Mais de 175 milhões de lâmpadas desligadas por 1 hora;
  • Mais de 58 milhões de computadores desligados por 1 hora.

Bom, isso faz muita diferença neh! Além disso a cada 50 mil acessos uma árvore é plantada. Esta é uma forma de mostrar que todos tem a possibilidade de ajudar este planeta de alguma forma. Então se você utiliza o Google como buscador comece também a usar o eco4planet!!!

Considerando as mais de 2,55 bilhões de buscas diárias realizadas no Google™ com tempo médio suposto em 10 segundos por pesquisa e a proporção de monitores por tecnologia utilizada, teríamos com um buscador de fundo preto a economia anual de mais de 7 Milhões de Kilowatts-hora! Esse valor equivale à:

  • Mais de 63 milhões de televisores em cores desligados por 1 hora;
  • Mais de 77 milhões de geladeiras desligadas por 1 hora;
  • Mais de 175 milhões de lâmpadas desligadas por 1 hora;
  • Mais de 58 milhões de computadores desligados por 1 hora.

Prototype também é um padrão de projeto (design pattern) criacional, seu objetivo é a criação de objetos a partir de um modelo, um protótipo já estabelecido, ele é usado em casos em que se é necessário a criação de vários objetos de uma classe cujo tais objetos sejam semelhante.

Para isso deve-se criar um objeto modelo (protótipo) clonável e fazer as atribuições que são comuns a todos os objetos ou os valores default. A classe deve implementar a interface Clonable.


public class Aluno implements Cloneable {
private String nome;
private String cidade;
private String cep;
private String universidade;
private Boolean possuiDependencia;
private ArrayList<Float> notas = new ArrayList<Float>();

 // GETTERS AND SETTERS
...
}

No metodo clone poderá ser feito a clonagem do protótipo, no caso da array, terá que ser feito um for, clonando a array manualmente, pois senão ele apenas criará uma referência para o mesmo objeto e então se um elemento for alterado em uma lista será alterado nas outras também.


protected Object clone() throws CloneNotSupportedException {

   Aluno novoAluno = (Aluno) super.clone();
   if(this.notas != null){
     novoAluno.notas = new ArrayList<Float>();
     for(Float f : this.notas){
        novoAluno.notas.add(f);
     }
   }
 return novoAluno;
 }

Usando:


public static void main(String[] args) throws CloneNotSupportedException {

Aluno alunoPrototipo = new Aluno();
alunoPrototipo.setCidade("Cidade Default");
alunoPrototipo.setCep("Cep Default");
alunoPrototipo.setUniversidade("Universidade Defaut");
alunoPrototipo.setDependencias(false);

Aluno a1 = (Aluno) alunoPrototipo.clone();
a1.setNome("José");
System.out.println(a1);

Em UML:

Clonable

Referência: Aula de Engenharia de Software – Profº Marcio – Univás.

[/sourcecode]

Singleton é um padrão de projeto (desingn patterns) criacional cuja a função é garantir a criação de uma única instância de determinada classe para toda a aplicação, ou seja, o objeto desta classe será criada apenas uma vez e sempre que necessário usa-lo, será sempre o mesmo objeto que será utilizado.

Para isso é necessário que a classe tenha um construtor privado, tenha um atributo estático e privado da classe para que nele seja armazenado a instância única da classe e um método público e estático para retornar a instância única do objeto e cria-la quando for utilizada da primeira vez.


public class SingletonClass {

	private static SingletonClass instance;

	private SingletonClass() {
	}

	public static SingletonClass getInstance(){
		if(instance == null){
			instance = new SingletonClass();
		}
		return instance;
	}
}

Este código acima pode ser melhorado ainda para que tenha maior garantia tornado o atributo da classe também uma constante.


public class SingletonClass {

	private static final SingletonClass INSTANCE = new SingletonClass();

	private SingletonClass() {
	}

	public static SingletonClass getInstance(){
		return INSTANCE;
	}
}

Em UML:

Class Diagram0

Referência: Aula de Engenharia de Software – Profº Marcio – Univás.

Hoje precisei fazer validação de email e me deparei com as expressões regulares, não tinha o menor conhecimento sobre elas mas descobri que são bastante úteis, então resolvi postar aqui algumas dos metacaracteres que conheci:

Circunflexo ^

É um metacaractere de posicionamento, indica início de linha. Por exemplo:

^alguma_palavra

quando esta expressão for usada ela buscará por um início de linha seguida da palavra especificada na expressão.

Cifrão $

Também é um metacaractere de posicionamento, ele representa um final de linha. Por exemplo:

alguma_palavra$

esta expressão buscará pela palavra especificada seguida de um final de linha.

Lista []

A lista é utilizada para indicar todos os caracteres que podem aparecer em uma determminada posição. Por exemplo:

[Mm]aria

No exemplo acima a expressão irá aceitar tanto o nome Maria iniciado com lera maiúscula quando com letra minúscula.


Ponto .

Indica que naquela posição poderá ter qualquer caractere. Por exemplo:

.[aeio]$

procura por qualquer caractere seguido de uma vogal e seguido de um final de linha.

O ponto também pode ser utilizado para indicar uma quantidade fixa de caractere. Por exemplo:

^..........$

No exemplo acima ele buscará por uma linha que contenha 10 caracteres.

Chaves {}

Dentro dela pode ser indicado a quantidade do caractere ou metacaractere anterior que sera repedidas. Por exemplo:

a{4}

A espressão acima procurará pela letra a se repetindo 4 vezes.

^.{10}$

Esta expressão faz a mesma coisa que o exemplo citado do Ponto (.), buscará por uma linha que contenha 10 caracteres, pois ele repetirá o ponto 10 vezes.


Curinga ou AND .*

Ele significa “qualquer coisa”. Pode ser usado para procurar por partes distintas de uma string. Por exemplo:

João .* Silva

A expressao acima fará verdadeira todas as strings que tem João qualquer coisa e Silva.

OR |

É usado para encontrar uma de várias opções, procura ou uma palavra ou outra, as opções devem ficar dentro de parentêses(). Por exemplo:

^(palavra1|palavra2|palavra3)

Essa expressão procurará um início de linha seguido da palavra1 ou a palavra2 ou a palavra3.


Interrogração ?

Assim como as chaves ela também é um repetidor. O caractere pode aparecer uma vez ou nao aparecer. Por exemplo:

a?

Asterisco *

Também é um repetidor. O caractere pode não aparecer ou aparecer em qualquer quantidade. Por exemplo:

a*

Mais +

Também é um repetidor. O caractere deve aparecer uma ou mais vezes. Por exemplo:

a+

Lista Negada [^]

Quando se quer negar uma lista é só utilizar o circunflexo antes. Por exemplo:

[^Mm]aria

Ele buscará por qualquer caractere exceto o M maiúsculo e minúsculo.

Referência: Apostila Conhecendo as Expressões Regulares, Aurélio Jargas.

Abaixo segue um simples exemplo de código para fazer uma janela de confirmação que pode ser usada em links e botões por exemplo para confirmação de ações:


onclick="return confirm('Confirma exclusão do registro?')"

tese

Neste exemplo será utilizado a versão do spring 2.5.6, hibernate-distribuition 3.3.1, hibernate-entitymanager 3.4 e hibernate-annotation 3.4, como IDE está sendo usado o Eclipse e como servidor o Tomcat. Abaixo segue a relação com os jars necessários:

hibernate3.jar c3p0.jar
antlr.jar commons-beanutils-1.7.0.jar
asm.jar commons-pool-1.4.jar
asm-attrs.jar jstl.jar
cglib.jar jta.jar
commons-collections.jar oro.jar
commons-logging.jar slf4j-api.jar
dom4j.jar slf4j-simple.jar
ehcache.jar spring.jar
javassist.jar spring-aop.jar
jta.jar spring-beans.jar
hibernate-annotations.jar spring-context.jar
hibernate-commons-annotations.jar spring-context-support.jar
hibernate-entitymanager.jar spring-core.jar
ejb3-persistence.jar spring-orm.jar
jboss-archive-browsing.jar spring-tx.jar
postgresql-8.2-504.jdbc4.jar spring-web.jar
spring-webmvc.jar standard.jar

No eclipse será criado um Web Dinamic Project, dentro do projeto criado será adicionado as libs no diretório WebContent -> WEB-INF -> lib:

imagem

A aplicação exemplo rodando:

imagem

Clique no link para baixar o tutorial completo em PDF: Spring+JPA

Clique aqui para baixar o projeto sem as libs

Clique aqui para baixar as bibliotecas necessárias

Clique aqui para baixar o sql do exemplo

A aplicação da normalização pode evitar alguns  problemas no banco de dados, tais como:

  • grupos repetitivos de dados;
  • redundâncias de dados desnecessárias;
  • perdas acidentais de informação;
  • dificuldade na representação de fatos da realidade observada;

A normalização de banco de dados  é uma técnica que permite evitar  inconsistências no banco como por exemplo informações com duplicidade, dependências funcionais mal resolvidas, etc.

(1FN) Primeira Forma Normal: tabelas sem grupos de repetição.

1º Problema: redundância e inconsistência

2º Problema: aumento desnecessário do volume de dados.

Exemplo: Tem-se uma tabela cliente no qual temos os campos id, nome e cidade.

cli

Pode-se perceber que existem repetições nas cidades, a cidade de São Paulo por exemplo está escrito de duas formas diferentes, mas fazem referência à mesma cidade, o mesmo acontece com a cidade de Belo Horizonte, ou seja, numa pesquisa por clientes da cidade de São Paulo por exemplo, tem-se como resultado neste caso apenas um cliente, quando na verdade existem dois cliente desta cidade.

Pode-se resolver isto da seguinte maneira:

Criamos uma tabela cidade e a tabela cliente tera uma chave estrangeira da tabela cidade:

cli1

Tabela cidade:

cid1

Neste caso, ainda fizemos uma tabela para o estado usando a mesma norma:

uf


OBS: Para que na tabela cidade não exsita duas cidades com o mesmo nome em um mesmo estado, é necessário que se faça uma Unique Key para o nome e o id_uf

(2FN) Segunda Forma Normal: Quando PK composta, cada atributo que não for PK deve depender de todas as chaves:

Por exemplo uma tabela pedido, cujo a chave  primária composta  é formado pelo id do cliente e o id do produto:

pedido

Veja que temos também uma atributo cor, porém este campo faz referência apenas ao produto, então de acordo com norma a tabela mostrada acima está incorreta, o atributo cor deve estar na tabela produto e não na tabela pedido:

produto

(3FN) Terceira Forma Normal: Todos os campos que não forem PK devem sempre depender da chave primária, é o mesmo que 2FN, porém esta faz referencia à chave primária simples.

Por exemplo uma tabela funcionário:

func

Na tabela acima nos temos o id do funcionário, o nome do funcionário, a sua categoria e o piso salarial da categoria do funcionário, perceba que o piso salarial faz referência a categoria e não ao funcionário, então de acordo com a 3FN o correto seria o seguinte:

catt

func2

Fazemos uma tabela categoria e nesta sim colocamos o piso salarial, pois este faz referência à categoria, e na tabela funcionário coloca-se uma chave estrangeira referenciando a tabela categoria!

Referência: Aula de Banco de Dados – Univás – Profº: Artur

Injeção de dependência nada mais é que quando um componente não instancia suas dependências mas sim o ambiente as fornece automaticamente. Vamos demonstrar isso com e sem o Spring:

Primeiro temos uma classe Monitor que será usada para interação com o usuário. Ela apenas escreve uma mensagem no console:

public class Monitor {

	public void exibeMensagem(String mensagem) {
		//Exibe mesagens para o usuário

		System.out.println("[MONITOR]" + mensagem);
	}
}

Agora teremos uma classe Teclado que será usada para ler algo que o usuario digitar:

public class Teclado {

	public String ler() {
		//Lè texto do usuário

		String texto = null;
		System.out.println("[TECLADO]>");
		try {
			texto = new BufferedReader(
new InputStreamReader(System.in)).readLine();
		} catch (IOException e) {
			System.out.println("Erro lendo teclado");
			e.printStackTrace();
		}
		return texto;
	}
}

Depois teremos a classe Impressora que apenas imprime o texto que a classe Teclado leu.

public class Impressora {

	public void imprimirTexto(String texto) {
		//Nossa impressora apenas escreve na tela
		//o texto digitado pelo usuario

		System.out.println("[IMPRESSORA]" + texto);
	}
}

E agora iremos montar o computador!!! Nesta classe temos referencias de todas as classe que compoe o computador, a classe Teclado, Monitor e Teclado. Perceba que não iremos instanciar nenhuma das dependências aqui.

Não podemos esquecer os metodos setter, pois é ele será usado para injetar as dependências tanto com o Spring quanto sem ele. Esta classe possui també, um método para ligarmos o nosso computador, que chamará o monitor para exibir uma mensagem ao usuário, o teclado para ler a mensagem e a impressora para imprimir:

public class Computador{

	private Teclado _teclado = null;
	private Monitor _monitor = null;
	private Impressora _impressora = null;

	public void setImpressora(Impressora impressora){
		_impressora = impressora;
	}

	public void setMonitor(Monitor monitor){
		_monitor = monitor;
	}

	public void setTeclado(Teclado teclado){
		_teclado = teclado;
	}

	public void ligar(){
		_monitor.exibeMensagem("Digite texo para impressão:");
		String texto = _teclado.ler();
		_impressora.imprimirTexto(texto);
		_monitor.exibeMensagem("Texto impresso!");
	}
}

Primeiro vamos criar uma classe para inicializar nossas depêndencias. Veja que criamos um objeto computador e configuramos cada dependência e depois ligamos o computador.

public class IniciaComputadorSemSpring {

	public static void main(String[] args) {

		Computador computador = new Computador();
		computador.setImpressora(new Impressora());
		computador.setTeclado(new Teclado());
		computador.setMonitor(new Monitor());
		computador.ligar();
	}
}

Agora iremos fazer o mesmo trabalho acima usando o Spring:

cria-se então o arquivo applicationContext.xml, este arquivo deve ficar no src do seu projeto. Cria-se um bean para a classe computador e passamos como propriedade para ele três outros beans que referenciam cada um respectivamente as classes Impressora, Teclado e Monitor.


<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">

<beans>

	<bean id="computadorBean" class="teste.computador.Computador">
<property name="impressora" ref="impressoraBean" />
<property name="teclado" ref="tecladoBean" />
<property name="monitor" ref="monitorBean" />
	</bean>

	<bean id="impressoraBean" class="teste.computador.Impressora" />

	<bean id="tecladoBean" class="teste.computador.Teclado" />

	<bean id="monitorBean" class="teste.computador.Monitor" />

</beans>

Agora criaremos a classe com outro método main para a inicialização com o Spring, aqui carregamos nosso applicationContext.xml e criamos um objeto Computador inicializando-o com o computadorBean declado no applicationContext.xml

<pre>public class IniciaUsandoSpring {

	public static void main(String[] args) {
		ApplicationContext applicationContext = new ClassPathXmlApplicationContext("classpath:applicationContext.xml");
		Computador computador = (Computador) applicationContext.getBean("computadorBean");
		computador.ligar();
	}
}

Referência Bibliográfica:  Apostila Spring – Phillip Calçado “Shoes”

Abaixo segue uma explicação resumida e rápida sobre SQL e algumas de suas instruções como SELECT, FROM, WHERE, JOIN, etc. Como já tive várias dúvidas com elas, imagino que outras pessoas possam ter também!

Para ilustração vamos imaginar um banco de dados de uma fornecedora de um produto qualquer, peguemos então duas tabelas: a tabela de produtos e a tabela de pedidos:

tab_produto

tab_pedido1

Antes de mais nada vamos citar alguns conceitos e termos  importantes:

PRIMARY KEY ou CHAVE PRIMÁRIA: identifica o registro (tupla)  univocamente, ou seja cada linha terá sua identificação que não poderá se repetir. Nas tabelas acima por exemplo a primary key das tabelas produto e pedido são os campos id, podemos perceber que os valores da coluna id não se repetem.

FOREIGN_KEY ou CHAVE ESTRANGEIRA: faz referência à um atributo de outra tabela, por exemplo na tabela pedido acima existe um campo chamado produto_id que faz referência ao campo id da tabela produto.

Vamos começar então com o código abaixo:

SELECT *

FROM produto, pedido

O resultado da consulta acima será o produto cartesiano  das duas tabelas, ou seja teremos uma tabela resultado de 12 registros, 3 registros de produto X 4 registros de pedidos, desta forma vamos ter registros sem lógica, pois apenas fizemos o produto cartesiano das duas tabelas, nada a mais.

produto_cart

Assim, o resultado será o ilustrado abaixo, podemos ver que como estamos usando asterísco (*) na cláusula SELECT, irá aparecer todos os campos das duas tabelas, pois não especificamos nenhum, o asterísco quer dizer TODOS os campos, podemos perceber tambem a falta de lógica dos registro como por exemplo o produto com id 2 junto com o pedido de id 1 que pertence ao produdo de id 1, isso acontece porque o que foi feito foi apenas um produto cartesiano como no esquema ilustrado acima :

sem_filtro

Agora vamos fazer uma primeira filtragem, para que possamos ter apenas registros que tenham lógica entre si:

SELECT *

FROM produto AS pr,

pedido AS pd

WHERE pr.id = pd.produto_id

Incluimos agora a instrução WHERE que está fazendo um primeiro filtro, ou seja só está nos mostrando os registro cujo o id da tabela produto seja igual ao id_produto da tabela pedido a cláusula AS indica que daremos um pseudônimo à nossa tabela, desta forma podemos trabalhar com nomes menores. Agora sim podemos ver registros que tenham lógica:

primeiro_filtro

Podemos também fazer a consulta acima usando a instrução JOIN que fará uma combinação das tabelas produto e pedido e depois uma interseção entre as duas tabelas, o resultado será o mesmo do de cima, porém usando o JOIN ganharemos muito mais performance na consulta o que faz muita diferença quando trabalhamos com volumes grandes de registros.

SELECT *

FROM produto AS pr

JOIN pedido AS pd

ON pr.id = pd.produto_id

Abaixo segue ilustração de como podemos exemplicar a consulta usando conjuntos, substituindo os conjuntos pela nossas tabelas fica bastante fácil de se entender!

conj21


Agora além de fazermos a interseção das tabelas vamos também fazer uma filtragem que só  retorne os registros que contenham no pedido o produto caneta:

SELECT *

FROM produto AS pr

JOIN pedido AS pd

ON pr.id = pd.produto_id

WHERE pr.nome = ‘CANETA’


No código acima estamos selecionando (SELECT) todos os campos (colunas) das tabelas produto e pedido,  cujo o id chave primária (PRIMARY KEY) da tabela produto seja igual ao pedido_id que é uma chave estrangeira ( FOREIGN_KEY) na tabela pedido, e ainda que o nome do produto seja “CANETA”.

Neste caso resultado desta consulta seria o seguinte:

result

Poderiamos ter feito essa mesma consulta da seguinte maneira:

SELECT *

FROM produto AS pr,

pedido AS pd

WHERE pr.id = pd.produto_id AND pr.nome = ‘CANETA’

Desta maneira ele também faria a filtragem assim como o join, porém ele perderia bastante na performance da consulta.

Então desta maneira podemos perceber que no SELECT colocamos os campos que queremos que apareça na consulta (colunas), no caso apresentado acima nós usamos um asterísco (*) então queremos que apareça todos os campos das duas tabelas. No FROM serão colocadas as tableas que queremos consultar, e com o WHERE fazemos as filtragens que forem necessárias.

FUNÇÕES DE AGREGAÇÃO:

COUNT: conta o número de registros do campo passado como parâmetro da consulta.

EX: Contar quantos produtos existem cadastrados na tabela produto.

SELECT COUNT(id) AS qtd_produto

FROM produto;

Resultado:

count

AVG: média do valor do conjunto do campo passado como parâmetro na consulta.

EX: Fazer a média da quantidade de produto de todos os pedidos feitos.

SELECT AVG(quantidade) AS media_qtd

FROM pedido;

Resultado:

avg

SUM: soma dos valores do conjunto do campo passado como parâmetro.

EX: Saber o total de produtos pedidos.

SELECT SUM(quantidade) AS TOTAL

FROM pedido;

Resultado:

sum

MIN: menor valor do conjunto do campo passado como parâmetro.

EX: O pedido com menor quantidade de produto.

SELECT MIN(quantidade) AS menor_valor

FROM pedido;

Resultado:

min

MAX: maior valor do conjunto do campo passado como parâmetro.

EX: O pedido com maior quantidade de produto.

SELECT MAX(quantidade) AS maior_valor

FROM pedido;

Resultado:

max

Agora iremos criar uma nova tabela, a tabela cliente que terá duas colunas o seu id e nome do cliente:

cliente

E na tabela pedido vamos adicionar mais uma coluna que será uma chave estrangeira (FOREIGN KEY) que fará referência ao id do cliente. Referenciamos todos os cliente da tabela exceto o cliente de nome Paulo, vamos supor que ele ainda não tenha feito nenhum pedido. E também  adicionamos mais um pedido do cliente de id 1 (João).

ta2

Vamos imaginar que queremos saber o nome de todos os clientes que fizeram pedido do produto de id 1:

SELECT c.nome

FROM cliente AS c

JOIN pedido AS p

ON c.id = p.cliente_id

WHERE p.produto_id = 1;

O resultado desta consulta será o ilustrado abaixo, podemos perceber que o cliente João aparece duas vezes porque ele fez dois pedidos do produto 1, uma vez com a quantidade de 100 e outra com a quantidade de 300. Porém não precisamos que o nome dele aparece repetidas vezes, senão se um cliente fazer o pedido do mesmo produto 1000 vezes, aparecerá 1000 vezes o nome dele repedido na consulta.

sem_sest

Para resolvermos isto usamos a instrução DISTINCT, ele fará com que não se repita os resultado da consulta:

SELECT DISTINCT(c.nome)

FROM cliente AS c

JOIN pedido AS p

ON c.id = p.cliente_id

WHERE p.produto_id = 1;

Está será a tabela resultado, sem repetições:

dist

Agora supomos que desejamos saber quantos pedidos cada cliente fez, para isso vamos usar a cláusula GROUP BY, que faz o agrupamento de algum paramêtro.

SELECT c.nome, COUNT(p.id) AS Quantidade

FROM cliente AS c

JOIN pedido AS p

ON c.id=p.cliente_id

GROUP BY c.nome;

Acima estamos selecionando o nome do cliente e com a função COUNT estamos contando os pedidos de cada cliente e com o GROUP BY agrupamos por nome do cliente a quantidade de pedidos. Então para cada cliente referenciado na tabela pedido será contado cada pedido que ele fez. A tabela resultado da consulta acima é essa:

group

SELECT ANINHADO

o selcet aninhado é uma subconsulta, é um comando SELECT embutido em uma outra cláusula SQL.

Imaginemos que gostariamos consultar todos os dados dos clientes que não fizeram nenhum pedido:

SELECT c.*

FROM cliente as c

WHERE c.id NOT IN (

SELECT DISTINCT(c.id)

FROM cliente as c

JOIN pedido as p

ON c.id = p.cliente_id)

Na consulta acima pedimos para que seja mostrados todos os campo da tabela cliente onde o id do cliente não existisse na consulta do segundo SELECT,  ou seja, para selicionar todos os atributos da tabela cliente que não existisse na tabela pedido. O resultado seria este:

aninhado

Apenas o cliente Paulo não fez nenhum pedido ainda!

Referência: Aula de Banco de Dados – Profº Artur – Univás.

No painel de controle do Windows ir em Sistemas:
passo 1

passo 1

Na guia Avançados, vá em variáveis de ambiente:

passo 2

Em variáveis de sistema crie uma nova variável:

passo 3

Localize em sua máquina onde foi instalado o JDK, geralmente ele fica em  C:Arquivos de programasJava, caso não esteje, encontre a pasta Java em seu sistema.

Coloque o nome da variável de JAVA_HOME e seu valor como o caminho do JDK instalado: C:Arquivos de programasJavajdk1.6.0. Confirme o caminho pois a versão do seu JDK pode ser diferente desta. Depois clique em OK.

passo 4

Após isso clicaremos outra vez em nova para cria outra variável.

Coloque o nome da variável de CLASSPATH e seu valor como .;%JAVA_HOME%\lib\tools.jar que é onde está o jar tools. Depois clique em OK.

passo 5

Agora localize a variável Path e clique em Edit?

6

Acrescente ao valor da variável o seguinte: %JAVA_HOME%bin. E clique em OK.

passo 7

E pronto! Agora é só reiniciar a máquina para que as alterações tenham efeito.

Próxima Página »