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

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 ?

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

1 curtida

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 !!!

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?

1 curtida

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
1 curtida
<?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>

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

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

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”

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