2017-01-28 4 views
0

Я так нуб на внешний материал для Bukkit программирования, так что я очень жаль, если это так легко решить: PNoClassDefFoundException при попытке использовать HikariCP

У меня есть проблема, и это то, что когда я пытаюсь используйте HikariCP в моем проекте, он возвращает ошибку (заголовок один).

Я использую его в плагине BungeeCord. Странно то, что я сделал это успешно пару раз, и я не знаю, почему он не работает на этот раз.

Ошибка/Журнал:

06:13:36 [ADVERTENCIA] Exception encountered when loading plugin: DiverseReport java.lang.NoClassDefFoundError: com/zaxxer/hikari/HikariDataSource at net.srlegsini.DiverseReport.Bungee.MClass.onEnable(MClass.java:44) at net.md_5.bungee.api.plugin.PluginManager.enablePlugins(PluginManager.java:227) at net.md_5.bungee.BungeeCord.start(BungeeCord.java:272) at net.md_5.bungee.BungeeCordLauncher.main(BungeeCordLauncher.java:55) at net.md_5.bungee.Bootstrap.main(Bootstrap.java:15) Caused by: java.lang.ClassNotFoundException: com.zaxxer.hikari.HikariDataSource at net.md_5.bungee.api.plugin.PluginClassloader.loadClass0(PluginClassloader.java:53) at net.md_5.bungee.api.plugin.PluginClassloader.loadClass(PluginClassloader.java:27) at java.lang.ClassLoader.loadClass(Unknown Source) ... 5 more 

Мой главный класс:

package net.srlegsini.DiverseReport.Bungee; 

import java.io.File; 
import java.io.IOException; 
import java.sql.Connection; 
import java.sql.SQLException; 
import java.util.Arrays; 

import com.zaxxer.hikari.HikariDataSource; 

import net.md_5.bungee.BungeeCord; 
import net.md_5.bungee.api.plugin.Plugin; 
import net.md_5.bungee.config.Configuration; 
import net.md_5.bungee.config.ConfigurationProvider; 
import net.md_5.bungee.config.YamlConfiguration; 
import net.srlegsini.DiverseReport.Bukkit.UUIDFetcher; 

public class MClass extends Plugin { 

    static Configuration config; 
    static MClass plugin; 

    static HikariDataSource hikari; 
    static Connection connection; 

    public void onEnable() { 
     BungeeCord.getInstance().getPluginManager().registerListener(this, new ChannelListener()); 
     BungeeCord.getInstance().registerChannel("Return"); 

     loadCfg(); 

     if (!config.contains("MySQL")) { 
      config.set("MySQL.Enable", false); 

      config.set("MySQL.Host", "localhost"); 
      config.set("MySQL.Port", 3306); 
      config.set("MySQL.User", "user"); 
      config.set("MySQL.Pass", "pass"); 
      config.set("MySQL.Database", "Sr_DiverseReport"); 
     } 

     saveCfg(getDataFolder()); 

     hikari = new HikariDataSource(); 
     hikari.setDataSourceClassName("com.mysql.jdbc.jdbc2.optional.MysqlDataSource"); 
     hikari.addDataSourceProperty("serverName", config.getString("MySQL.Host")); 
     hikari.addDataSourceProperty("port", 3306); 
     hikari.addDataSourceProperty("databaseName", config.getString("MySQL.Database")); 
     hikari.addDataSourceProperty("user", config.getString("MySQL.User")); 
     hikari.addDataSourceProperty("password", config.getString("MySQL.Pass")); 

     try { 
      Class.forName("com.mysql.jdbc.Driver"); 
      connection = hikari.getConnection(); 
     } catch (SQLException e1) { 
      e1.printStackTrace(); 
     } catch (ClassNotFoundException e2) { 

     } 

     saveCfg(getDataFolder()); 



    } 

    public void loadCfg() { 
     try { 
      File file = new File(getDataFolder(), "config.yml"); 
      if (!getDataFolder().exists()) { 
       getDataFolder().mkdir(); 
      } 

      if (!file.exists()) { 
       file.createNewFile(); 
      } 
      config = ConfigurationProvider.getProvider(YamlConfiguration.class) 
        .load(new File(getDataFolder(), "config.yml")); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 

    public static void saveCfg(File dataFolder) { 
     try { 
      ConfigurationProvider.getProvider(YamlConfiguration.class).save(config, new File(dataFolder, "config.yml")); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
    } 

    @SuppressWarnings({ "unused", "deprecation" }) 
    public static String getUUID(String playerName) { 
     UUIDFetcher fetcher = new UUIDFetcher(Arrays.asList("evilmidget38", "mbaxter")); 
     String playerUUID = null; 
     try { 
      playerUUID = UUIDFetcher.getUUIDOf(playerName).toString(); 
     } catch (Exception e2) { 
      playerUUID = BungeeCord.getInstance().getPlayer(playerName).getUniqueId().toString(); 
     } 

     return playerUUID; 
    } 

} 

Моя процедура: Создание проекта, импорт BungeeCord.jar, HikariCP-2.6.0.jar и slf4j- api-1.7.21.jar в пути создания, импортируйте HikariCP-2.6.0.jar и slf4j-api-1.7.21.jar

Он работал в других проектах, но, по волшебству, он сломан. Я не хочу использовать Maven, потому что у него должно быть исправление, потому что, как я уже сказал, я использовал эту же процедуру столько раз в прошлом.

Спасибо, что нашли время, чтобы прочитать это :)

EDIT: Image of the project

+1

Просьба включить исключение stacktrace и код в свой вопрос, не ссылаться на внешние местоположения. –

+1

Все готово. Сожалею. – SrLegsini

+0

И, пожалуйста, не используйте фрагменты, если вы не используете HTML, CSS или Javascript. –

ответ

0

Это все, за исключением:

Вызванный: java.lang.ClassNotFoundException: ком. zaxxer.hikari.HikariDataSource

HikariDataSource отсутствует во время выполнения , вам нужно каким-то образом его предоставить, например, скопировав соответствующий .jar с «драйверами» в папку ваших серверных библиотек.

Смотрите также некоторые вопросы, связанные: How to set up datasource with Spring for HikariCP? и How do I configure HikariCP in my Spring Boot app in my application.properties files?

+0

Приятно, но одно ... Я знаю, как использовать HikariCP, и я долгое время работал с ним в так много других плагинов. Случается, что теперь, магически, я не могу его использовать. Кроме того, я пытался копировать и вставлять старые проекты. Не работает. – SrLegsini

+0

может случиться так, что драйверы базы данных были в комплекте с какой-либо другой библиотекой, которую вы используете, но обновление зависимости удалило ее из вашего проекта. – jediz

0

Из за исключением ясно, что HikariCP-2.6.0.jar был в пути к классам во время компиляции, но отсутствует во время выполнения и от образа структуры проекта, также ясно, что как HikariCP-2.6.0.jar, так и slf4j-api-1.7.21.jar отсутствуют как ссылка на библиотеку в ide. Вы должны хранить эту банку в своей библиотеке классов в процессе компиляции и времени выполнения.

+0

Ницца, спасибо, но ... Как я могу это сделать? (Я так нуб на таких вещах, извините за глупые вопросы.) – SrLegsini

+0

http: //www.wikihow.com/Add-JARs-to-Project-Build-Paths-in-Eclipse- (Java) – mhshimul

+0

Я пробовал со всеми методами ... Ничто не работает: / – SrLegsini

Смежные вопросы