2
I am facing the following problem: we are in the development phase of a project, which involves the following technologies, SQL Server, Hibernate, Maven, Quartz and java.
After finishing one of the coding phases we try to generate a runnable jar, but at the time of executing it we come across a number of errors involving the jdbc driver that we can’t solve.
Error generated after JAR execution:
C:\Users\-----\workspace\CadastroProcessosMaven\CadastroProcessosMaven\target>java -jar extrator-acoesnovas-jar-with-dependencies.jar
ERROR StatusLogger No log4j2 configuration file found. Using default configuration: logging only errors to the console.
Exception in thread "main" java.lang.ExceptionInInitializerError at dao.MCPCPProcessoDAO.buscarProcessosPorSistema(MCPCPProcessoDAO.java:116)
at MainPackage.Crawler.consultarProcessos(Crawler.java:31)
at MainPackage.Crawler.main(Crawler.java:26)
Caused by: javax.persistence.PersistenceException: Unable to build entity manager factory
at org.hibernate.jpa.HibernatePersistenceProvider.createEntityManagerFactory(HibernatePersistenceProvider.java:66)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:55)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:39)
at dao.util.ConnectionFactory.<clinit>(ConnectionFactory.java:20)... 3 more
Caused by: org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]
at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:244)
at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:208)
at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:189)
at org.hibernate.engine.jdbc.internal.JdbcServicesImpl.configure(JdbcServicesImpl.java:51)
at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.configureServic e(StandardServiceRegistryImpl.java:94)
at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:217)
at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:189)
at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.handleTypes(MetadataBuildingProcess.java:352)
at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:111)
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.metadata(EntityManagerFactoryBuilderImpl.java:770)
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:797)
at org.hibernate.jpa.HibernatePersistenceProvider.createEntityManagerFactory(HibernatePersistenceProvider.java:58)
... 6 more
Caused by: org.hibernate.boot.registry.classloading.spi.ClassLoadingException: Unable to load class [com.microsoft.sqlserver.jdbc.SQLServerDriver]
at org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.classForName(ClassLoaderServiceImpl.java:229)
at org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl.loadDriverIfPossible(DriverManagerConnectionProviderImpl.java:183)
at org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl.buildCreator(DriverManagerConnectionProviderImpl.java:139)
at org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl.configure(DriverManagerConnectionProviderImpl.java:78)
at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:94)
at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:217)
at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:189)
at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.buildJdbcConnectionAccess(JdbcEnvironmentInitiator.java:145)
at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:66)
at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:35)
at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.initiateService(StandardServiceRegistryImpl.java:88)
at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:234)
... 17 more
Caused by: java.lang.ClassNotFoundException: Could not load requested class : com.microsoft.sqlserver.jdbc.SQLServerDriver
at org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl$AggregatedClassLoader.findClass(ClassLoaderServiceImpl.java:217)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.classForName(ClassLoaderServiceImpl.java:226)
... 28 more
Filing cabinet pom.xml
:
<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>
<artifactId>CadastroProcessos</artifactId>
<version>1.0</version>
<build>
<finalName>extrator-acoesnovas</finalName>
<sourceDirectory>src/main/java</sourceDirectory>
<resources>
<resource>
<directory>src/main/resources</directory>
</resource>
</resources>
<plugins>
<!-- Maven Compiler Plugin -->
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.3</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<!-- DEFINE AS CONFIGURAÇÕES DO MAVEN ASSEMBLER -->
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<archive>
<!-- DEFINE QUAL É A CLASSE MAIN DA APLICAÇÃO -->
<manifest>
<addClasspath>true</addClasspath>
<mainClass>MainPackage.CrawlerVivo</mainClass>
</manifest>
</archive>
<!-- ADICIONO AO NOME DO JAR FINAL UM COMPLEMENTO DIZENDO QUE ELE CONTÉM
AS DEPENDÊNCIAS -->
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<!-- DETERMINO QUE O JAR GERADO INCLUIRÁ AS DEPENDÊNCIAS E ELAS SERÃO
EMPACOTADAS JUNTO COM O PROJETO EM UM ÚNICO JAR -->
<id>make-my-jar-with-dependencies</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.2.2</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.2.2</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.2.2</version>
</dependency>
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>pdfbox</artifactId>
<version>1.8.10</version>
</dependency>
<dependency>
<groupId>net.sourceforge.htmlunit</groupId>
<artifactId>htmlunit</artifactId>
<version>2.15</version>
</dependency>
<dependency>
<groupId>net.sourceforge.htmlunit</groupId>
<artifactId>htmlunit-core-js</artifactId>
<version>2.15</version>
</dependency>
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.8.3</version>
</dependency>
<dependency>
<groupId>net.sourceforge.jexcelapi</groupId>
<artifactId>jxl</artifactId>
<version>2.6.12</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.0.1.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>5.0.1.Final</version>
</dependency>
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4</version>
</dependency>
<dependency>
<groupId>de.intarsys.opensource</groupId>
<artifactId>isrt</artifactId>
<version>4.10</version>
</dependency>
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.2.2</version>
</dependency>
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz-jobs</artifactId>
<version>2.2.2</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.3</version>
</dependency>
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>sqljdbc4</artifactId>
<version>3.0</version>
<scope>system</scope>
<systemPath>${basedir}/lib/sqljdbc4.jar</systemPath>
<optional>true</optional>
</dependency>
</dependencies>
</project>
Log Build Maven:
[INFO] Error stacktraces are turned on.
[INFO] Scanning for projects...
[WARNING]
[WARNING] Some problems were encountered while building the effective model
[WARNING] 'dependencies.dependency.systemPath' for com.microsoft.sqlserver:sqljdbc4:jar should not point at files within the project directory, ${basedir}/lib/sqljdbc4.jar will be unresolvable by dependent projects @ line 134, column 16
[WARNING]
[WARNING] It is highly recommended to fix these problems because they threaten the stability of your build.
[WARNING]
[WARNING] For this reason, future Maven versions might no longer support building such malformed projects.
[WARNING]
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building CadastroProcessos 1.0
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ CadastroProcessos ---
[INFO] Deleting C:\Users\-----\workspace\CadastroProcessosFinal\CadastroProcessosMaven\target
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ CadastroProcessos ---
[WARNING] Using platform encoding (Cp1252 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] Copying 2 resources
[INFO]
[INFO] --- maven-compiler-plugin:3.3:compile (default-compile) @ CadastroProcessos ---
[INFO] Changes detected - recompiling the module!
[WARNING] File encoding has not been set, using platform encoding Cp1252, i.e. build is platform dependent!
[INFO] Compiling 82 source files to C:\Users\------\workspace\CadastroProcessosFinal\CadastroProcessosMaven\target\classes
[INFO]
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ CadastroProcessos ---
[INFO] Not copying test resources
[INFO]
[INFO] --- maven-compiler-plugin:3.3:testCompile (default-testCompile) @ CadastroProcessos ---
[INFO] Not compiling test sources
[INFO]
[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ CadastroProcessos ---
[INFO] Tests are skipped.
[INFO]
[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ CadastroProcessos ---
[INFO] Building jar: C:\Users\-----\workspace\CadastroProcessosFinal\CadastroProcessosMaven\target\CadastroProcessos-1.0.jar
[INFO]
[INFO] --- maven-install-plugin:2.4:install (default-install) @ CadastroProcessos ---
[INFO] Installing C:\Users\------\workspace\CadastroProcessosFinal\CadastroProcessosMaven\target\CadastroProcessos-1.0.jar to C:\Users\-----\.m2\repository\br\com\finchsolucoes\CadastroProcessos\1.0\CadastroProcessos-1.0.jar
[INFO] Installing C:\Users\-----\workspace\CadastroProcessosFinal\CadastroProcessosMaven\pom.xml to C:\Users\------\.m2\repository\br\com\finchsolucoes\CadastroProcessos\1.0\CadastroProcessos-1.0.pom
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 47.167 s
[INFO] Finished at: 2015-10-23T08:28:15-02:00
[INFO] Final Memory: 31M/494M
[INFO] ------------------------------------------------------------------------
The error is because the driver is probably not in the classpath. Only with this you can not know why. Include the log, in text, not image, horrible to read it. Include your
pom.xml
, or the part of the build in it that generates the jar.– Bruno César
performed the edits you asked for, I’m sorry, if you can help, there you are!
– fernando.crts
See that is launched a
ClassNotFoundException
and you define the dependence of driver SQL Server as optional (<optional>true</optional>
), then really the dependency is not in the classpath. Have you tried removing this section ofpom.xml
?– Bruno César
I did what you said, keep making the same mistake
– fernando.crts
And check if the driver was packaged, did you check? I will try to simulate here as soon as possible
– Bruno César
so it was not, problem eh that it does not find the driver jdbc sqlServer, do not know if it is pq microsoft does not have in public repository, I tried to download the jar in hand put in a project folder, point the dependency to this folder, also did not work, ie Maven can not download, and if I go down and point to the jar tbm doesn’t work
– fernando.crts
Do not have in public repository even no, or install or even reference
– Bruno César
Good for those who are suffering there with jdbcDriver, we can solve, create manually inside the folder m2 of Maven a folder for dependency of sql server, download manually, paste inside the folder, build, generate the jar and run, a whore gambiarra more was the only way it worked, because by public repository Maven can not find
– fernando.crts