Im getting this error, when running my program :
ERROR - Uncaught Error:
java.lang.NoClassDefFoundError: com/zaxxer/hikari/HikariDataSource
at java.lang.Class.getDeclaredMethods0(Native Method)
Caused by: java.lang.ClassNotFoundException: com.zaxxer.hikari.HikariDataSource
at java.net.URLClassLoader$1.run(Unknown Source)
and have try for a while now to figure it out. Can you please help me in some way!
<?xml version="1.0" encoding="UTF-8"?>
<modelVersion>4.0.0</modelVersion>
<groupId>com.dcsquare.hivemq</groupId>
<artifactId>hivemq-database-example-plugin</artifactId>
<version>1.0-SNAPSHOT</version>
<inceptionYear>2014</inceptionYear>
<organization>
<name>dc-square GmbH</name>
</organization>
<developers>
<developer>
<id>dobermai</id>
<organization>dc-square GmbH</organization>
</developer>
</developers>
<dependencies>
<dependency>
<groupId>com.hivemq</groupId>
<artifactId>hivemq-spi</artifactId>
<version>2.0.0</version>
</dependency>
<!-- Database dependencies -->
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
<version>1.3.8</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.31</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.1</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<artifactSet>
<excludes>
<exclude>com.dcsquare.hivemq:hivemq-spi</exclude>
<exclude>com.google.inject:*</exclude>
<exclude>com.google.guava:*</exclude>
<exclude>org.slf4j:*</exclude>
<exclude>ch.qos.logback:*</exclude>
</excludes>
</artifactSet>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
<profiles>
<profile>
<id>RunWithHiveMQ</id>
<build>
<plugins>
<plugin>
<groupId>com.dcsquare</groupId>
<artifactId>hivemq-maven-plugin</artifactId>
<version>1.0.0</version>
<executions>
<execution>
<id>hivemq</id>
<phase>package</phase>
<goals>
<goal>hivemq</goal>
</goals>
<configuration>
<debugMode>SERVER</debugMode>
<hiveMQDir>C:\hivemq-2.3.1</hiveMQDir>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
<licenses>
<license>
<name>The Apache Software License, Version 2.0</name>
</license>
</licenses>
<repositories>
<repository>
<name>HiveMQ Repository</name>
<releases>
</releases>
<snapshots>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<name>HiveMQ Repository</name>
<releases>
</releases>
<snapshots>
</snapshots>
</pluginRepository>
</pluginRepositories>
</project>
package com.dcsquare.hivemq.example.database;
import com.dcsquare.hivemq.spi.HiveMQPluginModule;
import com.dcsquare.hivemq.spi.PluginEntryPoint;
import com.dcsquare.hivemq.spi.plugin.meta.Information;
import com.google.inject.Provider;
import com.google.inject.Provides;
import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;
import org.apache.commons.configuration.AbstractConfiguration;
import javax.inject.Singleton;
import java.sql.Connection;
import java.sql.SQLException;
import static com.dcsquare.hivemq.spi.config.Configurations.noConfigurationNeeded;
/**
*
*/
@Information(
name = "Database Example Plugin",
version = "1.0-SNAPSHOT",
author = "dc-square GmbH",
description = "A example plugin which persists every message to the database and authenticates clients from the database")
public class DatabaseExamplePluginModule extends HiveMQPluginModule {
@Provides
public Connection provideConnection(final HikariDataSource ds) throws SQLException {
return ds.getConnection();
}
@Provides
@Singleton
public HikariDataSource provideConnectionPool() {
final HikariConfig config = new HikariConfig();
config.setMaximumPoolSize(15);
config.setDataSourceClassName("com.mysql.jdbc.jdbc2.optional.MysqlDataSource");
config.addDataSourceProperty("serverName", "localhost");
config.addDataSourceProperty("port", "3306");
config.addDataSourceProperty("databaseName", "newdatabase");
config.addDataSourceProperty("user", "root");
config.addDataSourceProperty("password", "Beer");
config.addDataSourceProperty("cachePrepStmts", true);
config.addDataSourceProperty("prepStmtCacheSize", 250);
config.addDataSourceProperty("useServerPrepStmts", true);
return new HikariDataSource(config);
}
@Override
public Provider<Iterable<? extends AbstractConfiguration>> getConfigurations() {
//You probably want an external file configuration
return noConfigurationNeeded();
}
@Override
protected void configurePlugin() {
}
@Override
protected Class<? extends PluginEntryPoint> entryPointClass() {
return DatabaseExamplePlugin.class;
}
}