Erro ao compliar um Java

9 respostas
A

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

9 Respostas

alexvingg

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

alexvingg

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

A

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

isaiaspf
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:
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());
		}
	}
}
Minha dica é que você estude mais orientação a objetos e padrões de nomenclatura. [url]http://www.caelum.com.br/download/caelum-java-objetos-fj11.pdf[/url] [url]http://www.oracle.com/technetwork/java/codeconv-138413.html[/url]
A

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)

isaiaspf

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

A
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()); 
} 
} 
}
lucasportela

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");

A

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.

Criado 11 de agosto de 2011
Ultima resposta 11 de ago. de 2011
Respostas 9
Participantes 4