2017-03-18 200 views
0

在一个项目中,我们使用Hibernate和HikariCP,并且它在Eclipse中一切正常。但只要我生成一个jar文件(Maven),就不能再找到hikaricp了。我已经在各个可能的角度把这个,但我无法弄清楚什么是错的...运行罐子时找不到HikariCP

的persistence.xml

<?xml version="1.0" encoding="UTF-8"?> 
<persistence xmlns="http://java.sun.com/xml/ns/persistence" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd" 
version="2.0"> 
    <persistence-unit name="starmap" transaction-type="RESOURCE_LOCAL"> 
     <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider> 
     <class>net.clanwolf.c3.transfer.pojos.User</class> 
     <class>net.clanwolf.c3.transfer.pojos.RolePlayStory</class> 
     <class>net.clanwolf.c3.transfer.pojos.RolePlayCharacter</class> 
     <class>net.clanwolf.c3.transfer.pojos.RolePlayStoryVar2</class> 
     <properties> 
      <property name="javax.persistence.jdbc.driver" value="com.mysql.cj.jdbc.Driver" /> 
      <property name="javax.persistence.jdbc.url" value="jdbc:mysql://**.**.**.**:3306/C3?useUnicode=yes&amp;characterEncoding=UTF-8" /> 
      <property name="current_session_context_class" value="thread" /> 
      <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect" /> 

      <!-- Hikari connection pool --> 
      <property name="hibernate.hikari.dataSource.url" value="jdbc:mysql://**.**.**.**:3306/C3?useUnicode=yes&amp;characterEncoding=UTF-8" /> 
      <property name="hibernate.hikari.dataSource.user" value="**"/> 
      <property name="hibernate.hikari.maximumPoolSize" value="100" /> 
      <property name="hibernate.hikari.idleTimeout" value="30000" /> 
      <property name="hibernate.hikari.dataSource.cachePrepStmts" value="true" /> 
      <property name="hibernate.hikari.dataSource.prepStmtCacheSize" value="250" /> 
      <property name="hibernate.hikari.dataSource.prepStmtCacheSqlLimit" value="2048" /> 
      <property name="hibernate.hikari.dataSource.useServerPrepStmts" value="true" /> 
     </properties> 
    </persistence-unit> 
</persistence> 

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

    ... 

    <dependencies> 
     <!-- Database persistence --> 
     <dependency> 
      <groupId>mysql</groupId> 
      <artifactId>mysql-connector-java</artifactId> 
      <!-- <version>5.1.33</version> --> 
      <version>6.0.5</version> 
     </dependency> 
     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-core</artifactId> 
      <version>5.1.0.Final</version> 
     </dependency> 
     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-entitymanager</artifactId> 
      <version>5.1.0.Final</version> 
      <!-- <version>5.0.3.Final</version> --> 
     </dependency> 
     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-ehcache</artifactId> 
      <version>5.1.0.Final</version> 
     </dependency> 

     <!-- https://mvnrepository.com/artifact/com.zaxxer/HikariCP --> 
     <dependency> 
      <groupId>com.zaxxer</groupId> 
      <artifactId>HikariCP</artifactId> 
      <version>2.6.1</version> 
     </dependency> 

     <!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-hikaricp --> 
     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-hikaricp</artifactId> 
      <version>5.2.7.Final</version> 
     </dependency> 

     ... 

     <!-- Spring --> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-orm</artifactId> 
      <version>4.2.2.RELEASE</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-context</artifactId> 
      <version>4.2.2.RELEASE</version> 
     </dependency> 
     <[email protected] --> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-tx</artifactId> 
      <version>4.2.2.RELEASE</version> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework.security</groupId> 
      <artifactId>spring-security-config</artifactId> 
      <version>4.2.1.RELEASE</version> 
     </dependency> 

     ... 

     <dependency> 
      <groupId>org.hibernate.common</groupId> 
      <artifactId>hibernate-commons-annotations</artifactId> 
      <version>5.0.0.Final</version> 
     </dependency> 
     <dependency> 
      <groupId>org.hibernate.javax.persistence</groupId> 
      <artifactId>hibernate-jpa-2.1-api</artifactId> 
      <version>1.0.0.Final</version> 
     </dependency> 

     ... 

    </dependencies> 
</project> 

如果我在Eclipse中运行这个,它都很好:

01:14:05,436信息HikariDataSource:70 - HikariPool-1 - 开始。

如果我运行它从创建罐子,它说:

01:11:14631 WARN ConnectionProviderInitiator:256 - HHH000472:阿光遇到 性质,但阿光的ConnectionProvider没有 发现在类路径上;这些属性将被忽略。 01:11:14,634警告连接:71 - HHH10001002:使用休眠 内置连接池(不适合生产使用)01:11:14,639信息 连接:127 - HHH10001005:使用驱动程序[com.mysql.cj。 jdbc.Driver] 在URL [JDBC:MySQL的://212.227.253.80:3306/C3 =了useUnicode是&的characterEncoding = UTF-8]

的文件中的类路径是肯定的,我做的不明白为什么它不会被发现。 任何帮助非常感谢!

+0

文件IS在类路径中是肯定的:如果是,则不会出现此错误。你如何运行你的应用程序?首先是哪种应用程序?如果部署在Web服务器上,它是如何部署的? –

+0

这是一个java控制台应用程序。其实是一款游戏的服务器。它连接到数据库并为通过nadron框架连接的本地Java客户端提供访问点。 Maven创建一个jar文件,我从命令行(java -jar blah.jar)运行它。稍后,这将通过命令行在服务器上启动。 – WarWolfen

+0

那么,你如何运行它?发布命令。发布jar文件的内容。发布其清单。发布你的目录和jar文件的结构。如果您没有提供任何细节,我们无法提供帮助。 –

回答

0

解决。

我的项目是建立与maven阴影。显然,如果在生成的jar包中包含hikariCP作为类文件(而不是jar文件),它根本不起作用。如果我在我的jar旁边的文件系统中提供CP jar并将它们添加到清单中,则会找到它们。

我不知道为什么它不会首先使用包中的类文件,但是...他们在那些文件中,他们处于正确的位置,但是hikari不会看到它们。