簡體   English   中英

運行jar時找不到HikariCP

[英]HikariCP is not found when running the jar

在一個項目中,我們將Hibernate與HikariCP一起使用,並且在Eclipse中一切正常。 但是,一旦我生成一個jar文件(Maven),就不再能夠找到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>
        <!--@Transactional -->
        <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 INFO HikariDataSource:70-HikariPool-1-已啟動。

如果我從創建jar運行它,它說:

01:11:14,631 WARN ConnectionProviderInitiator:256-HHH000472:遇到了Hikari屬性,但是在類路徑上找不到Hikari ConnectionProvider; 這些屬性將被忽略。 01:11:14,634 WARN連接:71-HHH10001002:使用Hibernate內置連接池(不適用於生產!)01:11:14,639 INFO連接:127-HHH10001005:使用驅動程序[com.mysql.cj.jdbc.Driver ],網址為[jdbc:mysql://212.227.253.80:3306 / C3?useUnicode = yes&characterEncoding = UTF-8]

該文件肯定在類路徑中,我看不到為什么找不到該文件。 很感謝任何形式的幫助!

解決了。

我的項目是使用maven-shade構建的。 顯然,如果在生成的jar包中將hikariCP作為類文件(而不是jar)包含在內,則它根本不起作用。 如果我在jar旁邊的文件系統中提供CP jar,並將其添加到清單中,則會找到它們。

我不知道為什么它不首先使用包中的類文件,而是...在這些文件中並且它們處於正確的位置,但是hikari看不到它們。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM