Aplicativo .jar nao abre apos ser criado no eclipse

14 respostas
java
Pehgamarra

Quando eu crio minha aplicação, ela nao abre…

A aplicação: https://git (remova isso ) hub.com/pehgamarra/GelaGuela-Adega

Alguém sabe me dizer porque?

Para criar eu faço as seguintes etapas no eclipse File>Export>JAR File>(Seleciono o projeto/export genereted class files and resources/Export java source files and resources/Add directory entries)>(Generate the manifest file/seal some packages/main clas :program.Application>finish…

14 Respostas

Dyeizon

Opa @Pehgamarra,

Tenta realizar o comando com o J de Java minúsculo, e coloca um espaço entre a expressão -jar e o local do seu arquivo.

java -jar "seuarquivo.jar"

Pehgamarra


oq eu faço?

Pelo q eu entendi ele nao está conseguindo se conectar com o banco de dados… o Application.java:80 é quando realiza o conexao = Db.getConnection();…

Estou fazendo algo errado na hora de criar o arquivo?

staroski

O método loadProperties da classe Db não está encontrando o arquivo db.properties.

Como você está fazendo pra tentar carregar esse arquivo?

Pehgamarra

Sim, não está encontrando

“Como você está fazendo pra tentar carregar esse arquivo?” Eu tenho ele na pasta do programa também, mas não está indo…Sem%20t%C3%ADtulo

O Sql está ativo, no eclipse funciona tudo certinho, conecta com o banco de dados numa boa.

staroski

Vou repetir a pergunta:
Como você está fazendo pra tentar carregar esse arquivo?
Isto é, como é o código Java que está lendo esse arquivo?

Pehgamarra
public static Connection getConnection() {
	if (conn == null) {
		try {
			Properties props = loadProperties();
			String url = props.getProperty("dburl");
			conn = DriverManager.getConnection(url, props);
		} catch (SQLException e) {
			throw new DbException(e.getMessage());
		}
	}
	return conn;
}
Pehgamarra
private static Properties loadProperties() {
	try (FileInputStream fs = new FileInputStream("db.properties")) {
		Properties props = new Properties();
		props.load(fs);
		return props;
	} catch (IOException e) {
		throw new DbException(e.getMessage());
	}
}
staroski

primeiro você tem que garantir que a pasta do arquivo db.properties esteja no classpath de sua aplicação:

java -cp <pastas a serem adicionadas ao classpath> -jar "seuarquivo.jar"

Depois mude a implementação para carregar assim:

private static Properties loadProperties() {
    try (InputStream is = getClass().getResourceAsStream("/db.properties")) {
        Properties props = new Properties();
        props.load(is);
        return props;
    } catch (IOException e) {
        throw new DbException(e.getMessage()); // Dica: não encontrar o arquivo não é uma DBexcption...
    }
}
Pehgamarra

eu coloquei e esta dando esse erro no getClass() >>Cannot make a static reference to the non-static method getClass() from the type Object

se eu coloco como nao static da erro no getConnection

staroski

Não vi que seu método é estático.
É só trocar o

getClass()

por

NomeDaSuaClasse.class
Pehgamarra

C:\Users\Pedro>java -cp “C:\Users\Pedro\Desktop\gelaguela_lib” -jar “gelaguela.jar”
Error: Unable to access jarfile gelaguela.jar

Pehgamarra

staroski
java -cp .;gelaguela_lib;gelaguela.jar seu.pacote.SuaClasseMain
Pehgamarra

Mano, muito obrigado consegui aqui… você ajudou demais…

ficou assim ó:

private static Properties loadProperties() {

try (InputStream is = ApplicationView.class.getClassLoader().getResourceAsStream(db.properties)) {

Properties props = new Properties();

props.load(is);

return props;

} catch (IOException e) {

throw new DbException(e.getMessage());

}

}
Criado 29 de outubro de 2020
Ultima resposta 29 de out. de 2020
Respostas 14
Participantes 3