Como gerar um arquivo .jar de um sistema com Maven e integrado com SQL Server?

9 respostas Resolvido
javamysqlprogramação
Marcos_Pinheiro1

Olá pessoal, tudo bem ? Sou já um programador Java experiente na área, porém não consigo gerar o executável de um programa com GUI integrado com SQL Server. Já possuo o conector Java do SQL, porém quando executo o comando “Clean and Build” no Netbeans, ou “export” no Eclipse, o ,jar é gerado, mas o sistema não abre. O que devo fazer ?

9 Respostas

davidbuzatto

Você precisa adicionar e configurar o plugin maven-assembly no seu pom.xml primeiro:

pom.xml

<build>
    <plugins>
        <plugin>
            <artifactId>maven-assembly-plugin</artifactId>
            <configuration>
                <archive>
                    <manifest>
                        <mainClass>pacote.da.sua.classe.principal.ClassePrincipal</mainClass>
                    </manifest>
                </archive>
                <descriptorRefs>
                    <descriptorRef>jar-with-dependencies</descriptorRef>
                </descriptorRefs>
            </configuration>
        </plugin>
    </plugins>
</build>

Depois disso, no NetBeans, do lado esquerdo no canto inferior, vão aparecer novos “goals” do maven. Clique duas vezes no “assembly assembly”. Aguarde o processo de build. No diretório do projeto, dentro do diretório target, haverá agora dois arquivos .jar. Um que é o sem as dependências e outro com as dependências empacotadas dentro do .jar (o nome dele termina com jar-with-dependencies).

Fonte: java - How can I create an executable/runnable JAR with dependencies using Maven? - Stack Overflow

Marcos_Pinheiro1

Tudo bem davidbuzatto ? Então amigo, fiz o que você disse, mas mesmo assim o “jar-with-dependencies” não abre. Você poderia me ajudar ? Abraço !!!

davidbuzatto

Se vc não mostrar seu pom.xml, explicar a estrutura do projeto, mostrar como está gerenciando as dependências etc. fica difícil de ajudar, pq não dá pra adivinhar. As vezes vc está colocando as dependências fora do Maven, por exemplo. Explica como vc está organizando suas coisas, pq da forma q expliquei, se for um projeto Maven montado da forma que deve ser, teria que funcionar. Se você estiver usando Spring Boot vc não precisa fazer isso por exemplo. Vc tentou executar o arquivo jar pelo terminal para ver as exceções que estão sendo lançadas?

Lucas_Camara

Um teste que vc pode fazer é executar o jar na linha de comando e ver o erro que aparece (para isso, é preciso que a aplicação esteja gerando log do erros).

java -jar seuApp-jar-with-dependencies.jar
Marcos_Pinheiro1
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>sistemasdevendas</groupId>
    <artifactId>SistemaDeVendas</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>jar</packaging>
    <dependencies>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.29</version>
        </dependency>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-api</artifactId>
            <version>5.6.0</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-params</artifactId>
            <version>5.6.0</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-engine</artifactId>
            <version>5.6.0</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>18</maven.compiler.source>
        <maven.compiler.target>18</maven.compiler.target>
        <exec.mainClass>sistemadevendas.Principal</exec.mainClass>
    </properties>
    <build>
        <plugins>
                <plugin>
                    <artifactId>maven-assembly-plugin</artifactId>
                    <configuration>
                        <archive>
                            <manifest>
                                <mainClass>sistemadevendas.Principal</mainClass>
                            </manifest>
                        </archive>
                        <descriptorRefs>
                            <descriptorRef>jar-with-dependencies</descriptorRef>
                        </descriptorRefs>
                    </configuration>
                </plugin>
        </plugins>
    </build>
</project>
Marcos_Pinheiro1

Segue acima o meu arquivo pom.xml. Se puder me ajudar agradeço !!! Abraços !!!

davidbuzatto

Tentou executar via linha de comando pra ver se há algum indício no stack trace?

Marcos_Pinheiro1
Solucao aceita

Problema resolvido !
Executei no prompt “java -jar sistema.jar” e retornou o erro assim:
“no main manifest attribute, in sistema.jar”
A solução foi alterar o MANIFEST.MF para a seguinte instrução:

“Manifest-Version: 1.0
Main-class: sistemadevendas.Principal”

Marcos_Pinheiro1

Obrigado a todos pela atenção !!! Abraços !!!

Criado 12 de junho de 2023
Ultima resposta 15 de jun. de 2023
Respostas 9
Participantes 3