Aplicativo .jar nao abre apos ser criado no eclipse

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…

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"


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?

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

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

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.

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

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

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...
    }
}

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

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

getClass()

por

NomeDaSuaClasse.class

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

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

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

1 curtida