Erro ao compliar um Java

PessoAll,

Eu tenho o seguinte código:

Minha versão do java é:

D:\bea\jdk150_22\bin>java -version
java version “1.5.0_22”
Java™ 2 Runtime Environment, Standard Edition (build 1.5.0_22-b03)
Java HotSpot™ Client VM (build 1.5.0_22-b03, mixed mode)

Para executar eu uso um Bat com o seguinte código:

set JDK_HOME=D:\bea\jdk150_22
set PATH=%JDK_HOME%\bin;%PATH%
set CLASSPATH=%CLASSPATH%;D:\oracle\product\10.2.0\client_1\jdbc\lib\classes12.jar

rem ---- compile
javac GetDBOracle.java

rem ---- testing
java GetDBOracle

rem ---- add to jar
jar cf GetDBOracle.jar GetDBOracle.class

E meu código Java

import java.sql.;
import java.io.
;

public class GetDBOracle {

public static String GetDBOracle(String Parm1, String Parm2) throws SQLException
{
String myResult = “”;

// Load Oracle driver
DriverManager.registerDriver (new oracle.jdbc.OracleDriver());

// Connect to the local database
Connection conn = DriverManager.getConnection
(“jdbc:oracle:thin:@localhost:ORCL”, “ORC”, “ORC2010”);

// Query the employee names
Statement stmt = conn.createStatement ();

ResultSet rset = stmt.executeQuery (“SELECT JAVA_GET_VALUE(’“Parm1”’,’“Parm2”’) FROM DUAL”);

// Print the name out
while (rset.next ()) {
myResult = rset.getString (1);
}

//close the result set, statement, and the connection
rset.close();
stmt.close();
conn.close();

return myResult;

}

public static void main(String args[])
{
try {
System.out.println(GetDBOracle(“XXI”, “12000”));
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
}

Erro

Exception in thread “main” java.lang.NoClassDefFoundError: GetDBOracle

Opa, da uma olhada aqui antes de postar :slight_smile:

A classe de conexão com o oracle ta no projeto ?

[color=blue] [/color] Sim eu coloco no Bat onde está a classe para conexão.

Cara, o erro tá acontecendo nessa linha:System.out.println(GetDBOracle("XXI", "12000"));Eu não sei se estou entendendo o que você está querendo fazer mas acho que é algo próximo disso:[code]public class DBOracle {
public String select(String parm1, String parm2) throws SQLException
{
String myResult = “”;

	// Load Oracle driver.
	DriverManager.registerDriver(new oracle.jdbc.OracleDriver()); 
	...
	
	return myResult;
}

public static void main(String args[]) {
	try {
		System.out.println(new DBOracle().select("XXI", "12000"));
	}
	catch(Exception e) {
		System.out.println(e.getMessage());
	}
}

}[/code]Minha dica é que você estude mais orientação a objetos e padrões de nomenclatura.
http://www.caelum.com.br/download/caelum-java-objetos-fj11.pdf
http://www.oracle.com/technetwork/java/codeconv-138413.html

Obrigado pela ajuda :slight_smile:

Esse último passo out.println é um teste que eu faço mas se eu triar dá erro também.

Preciso de um código java que receba 2 parametros e faça uma consulta a uma função no Banco de dados Oracle.

O que você me sugeriu deu erro também :cry:

GetDBOracle.java:39: cannot find symbol
symbol : method select(java.lang.String,java.lang.String)
location: class GetDBOracle
System.out.println(new GetDBOracle().select(“Entidade_RHXXI”, “EM_12000_Col1”));
^
1 error
Exception in thread “main” java.lang.NoClassDefFoundError: GetDBOracle

Que eu acho mais estranho é que se eu compliar em uma outra versão Java:
java version “1.6.0_25”
Java™ SE Runtime Environment (build 1.6.0_25-b06)
Java HotSpot™ Client VM (build 20.0-b11, mixed mode, sharing)
Funciona.

E nessa não
java version “1.5.0_22”
Java™ 2 Runtime Environment, Standard Edition (build 1.5.0_22-b03)
Java HotSpot™ Client VM (build 1.5.0_22-b03, mixed mode)

Estranho. Posta (usando code tag) ou anexa todo código da tua classe GetDBOracle para facilitar na identificação do problema.

import java.sql.*; 
import java.io.*; 

public class GetDBOracle { 

public static String GetDBOracle(String Parm1, String Parm2) throws SQLException 
{ 
String myResult = ""; 

// Load Oracle driver 
DriverManager.registerDriver (new oracle.jdbc.OracleDriver()); 

// Connect to the local database 
Connection conn = DriverManager.getConnection 
("jdbc:oracle:thin:@localhost:ORCL", "ORC", "ORC2010"); 

// Query the employee names 
Statement stmt = conn.createStatement (); 

ResultSet rset = stmt.executeQuery ("SELECT JAVA_GET_VALUE('"Parm1"','"Parm2"') FROM DUAL"); 

// Print the name out 
while (rset.next ()) { 
myResult = rset.getString (1); 
} 

//close the result set, statement, and the connection 
rset.close(); 
stmt.close(); 
conn.close(); 

return myResult; 

} 

public static void main(String args[]) 
{ 
try { 
System.out.println(GetDBOracle("XXI", "12000")); 
} catch (Exception e) { 
System.out.println(e.getMessage()); 
} 
} 
} 

não informou a porta do banco ORACLE
exemplo: “oracle:thin:@localhost:1521:teste”

ERRO na linha 20
ResultSet rset = stmt.executeQuery (“SELECT JAVA_GET_VALUE(’“Parm1”’,’“Parm2”’) FROM DUAL”);

não concatenou os parametros na consulta…

tente assim:

ResultSet rset = stmt.executeQuery (“SELECT JAVA_GET_VALUE(’” + Parm1+ “’,’” +Parm2 +"’) FROM DUAL");

Lucas,

A acho que não preciso passar a porta porque conecto usando o SID e vou testar concatenar.

O mais estranho é porque eu consigo executar em outra versão o mesmo código.

mas valeu pela ajuda.