Estou com uma certa dificuldade, mas antes passarei todas as especificações e configurações atuais feitas no meu pc.
VARIAVEL JAVA_HOME:
VALOR DA VARIAVEL: C:\Arquivos de programas\Java\jdk1.6.0_01
VARIAVEL .CLASSPATH
VALOR DA VARIAVEL: C:\Arquivos de programas\Java\jdk1.6.0_01\lib;%CATALINA_HOME%\lib\servlet-api.jar;%CATALINA_HOME%\lib\jsp-api.jar;C:\aplicacao;
VARIAVEL CATALINA_HOME
VALOR DA VARIAVEL: C:\Arquivos de programas\Apache Software Foundation\Tomcat 6.0
NÃO ESTOU USANDO IDE eclipse ou netbeans, estou usando o prompt de comando do windows xp.
Chamo a atenção para uma simples implementação usando quatro classes estudadas na apostila do Caelum:
Conexao.java, Contato.java, ContatoDao.java e TestaInsere.java
1)Como podem ver em classpath está C:\aplicacao. É neste diretório que defino os PACOTES.
2)Criei três DIETORIOS distintos
C:
aplicacao
fabrica
dao
contato
3)Criei três pacotes distintos
aplicacao.fabrica
aplicacao.dao
aplicacao.contato
4)Vejam os códigos das classes
4.1 A classe do pacote aplicacao.fabrica
package aplicacao.fabrica;
import java.sql.*;
public class Conexao {
public Connection getConnection() {
try {
return DriverManager.getConnection("jdbc:mysql://localhost/principal","root","pass");
} catch(SQLException e) {
throw new RuntimeException(e);
}
}
}
4.2 A classe do pacote aplicacao.contato
package aplicacao.contato;
import java.io.*;
public class Contato {
private String nome;
private String email;
private String endereco;
// métodos get e set para nome, email, endereço
public String getNome() {
return this.nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getEmail() {
return this.email;
}
public void setEmail(String email) {
this.email = email;
}
public String getEndereco() {
return this.endereco;
}
public void setEndereco(String endereco) {
this.endereco = endereco;
}
}
4.3 A classe do pacote aplicacao.dao
package aplicacao.dao;
import aplicacao.fabrica.*;
import aplicacao.contato.*;
import java.sql.*;
public class ContatoDao{
private Connection connection;
public ContatoDao() {
this.connection = new Conexao().getConnection();
}
public void adiciona(Contato contato) {
String sql = "insert into contatos (nome,email,endereco) values (?,?,?)";
try {
// prepared statement para inserção
PreparedStatement stmt = connection.prepareStatement(sql);
// seta os valores
stmt.setString(1,contato.getNome());
stmt.setString(2,contato.getEmail());
stmt.setString(3,contato.getEndereco());
// executa
stmt.execute();
stmt.close();
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
}
4.4Classe de teste de inserção de dados em um banco MySql
import aplicacao.fabrica.*;
import aplicacao.contato.*;
import aplicacao.dao.*;
import java.sql.*;
public class TestaInsere{
public static void main(String[] args) {
Contato contato = new Contato();
contato.setNome("Alan");
contato.setEmail("[email removido]");
contato.setEndereco("R. Alto Alegre");
TestaInsere bd = new TestaInsere();
bd.adiciona(contato);
System.out.println("Gravado!");
}
}
5)OBJETIVO:
Quero poder compilar a classe ContatoDao.java dentro do diretório c:\aplicacao\dao, e a classe TestaInsere.java de um diretório em outra PARTIÇÃO d:, por exemplo, as três classes dos pacotes estão dentro de:
C:\aplicacao\fabrica\Conexao.java (Conexao.class)
C:\aplicacao\contato\Contato.java (Contato.class)
C:\aplicacao\dao\ContatoDao.java (ContatoDao.class)
E a classe TestaInsere.java está em:
D:\TestaInsere.java
6)ERROS:
6.1 Vou no prompt e entro na partição c:\aplicacao\dao
Dou o comando javac ContatoDao.java
erros:
packcage aplicacao.fabrica does not exist
packcage aplicacao.contato does not exist
6.2 Vou no prompt e entro na partição d:
Dou o comando simples javac TestaInsere.java
erros:
packcage aplicacao.fabrica does not exist
packcage aplicacao.contato does not exist
packcage aplicacao.dao does not exist
Ou seja, não consigo fazer no ato de compilação das classes ContatoDao.java e TestaInsere.java, que estas enxeguem os pacotes distintos citados acima, que estão dentro do diretório setado no classpath (C:\aplicacao)
7)IDE
Sei que no eclipse e netbeans tudo isso fica mais fácil, mas para saber como tudo fuinciona realmente é necessário usa o pompt algumas vezes, e por questões de CONCUSOS, é necessário o conhecimento. Portanto, como faço para compilar uma classe em um diretório de partição diferente, quando esta faz imports de vários packcages em outra partição?