2017-03-18 201 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不會看到它們。