2017-01-28 5 views
0

를 사용하는 동안 : P 내가 문제가NoClassDefFoundException 내가 프로그래밍을 Bukkit 외부 물건에 너무 멍청한 놈, 그래서 그것을 해결하기 위해 너무 쉽게 있다면 미안 해요 HikariCP

, 그리고 그것의 그 내가하려고 할 때 내 프로젝트에서 HikariCP를 사용하면 오류 (제목 1)로 반환됩니다.

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- buildpath에있는 api-1.7.21.jar, import HikariCP-2.6.0.jar and slf4j-api-1.7.21.jar

그것은 다른 프로젝트에서도 작동했지만 마술처럼 깨졌습니다. Maven을 사용하고 싶지 않습니다. 왜냐하면 말했듯이 과거에이 동일한 절차를 여러 번 사용했기 때문에 수정이 필요하기 때문입니다.

는이

편집을 :) 읽을 시간을내어 주셔서 감사합니다 Image of the project

+1

질문에 예외 스택 트레이스와 코드를 포함하고 외부 위치로 연결하지 마십시오. –

+1

끝났습니다. 죄송합니다. – SrLegsini

+0

HTML, CSS 또는 Javascript를 사용하지 않는 한 스 니펫을 사용하지 마십시오. –

답변

0

그것은 예외 전부 : java.lang.ClassNotFoundException가 : COM

에 의해 발생. zaxxer.hikari.HikariDataSource

런타임시 HikariDataSource이 누락되었습니다. , 당신은 그것을 어떻게 든 제공 할 필요가 있습니다. 예를 들어, '드라이버'가있는 관련 .jar를 서버 라이브러리 폴더에 복사하면됩니다.

또한

몇 가지 관련 질문을 참조하십시오 How to set up datasource with Spring for HikariCP? 및 HikariCP-2.6.0.jar 컴파일 시간 동안 클래스 경로에 있었던 것이 분명하다 예외에서 How do I configure HikariCP in my Spring Boot app in my application.properties files?

+0

니스,하지만 한 가지 ... 히카리 CP를 사용하는 방법을 알고 있고, 그걸로 오랫동안 일하고있었습니다. 이렇게 많은 다른 플러그인. 지금은 마술처럼, 나는 그것을 사용할 수 없다. 또한 이전 프로젝트를 복사하여 붙여 넣으려고했습니다. 작동하지 않습니다. – SrLegsini

+0

데이터베이스 드라이버가 사용중인 다른 라이브러리에 번들로 제공되었지만 종속성을 업그레이드하면 프로젝트에서 제거되었습니다. – jediz

0

하지만 런타임과의 이미지에서 누락 프로젝트 구조에서, ide에서 라이브러리 참조로 HikariCP-2.6.0.jar 및 slf4j-api-1.7.21.jar가 모두 누락 되었음이 분명합니다. 컴파일 시간과 런타임 중에 클래스 패스 라이브러리에 이러한 jar를 유지해야합니다.

+0

좋았어, 고마워,하지만 ... 어떻게하면 돼? (나는 이런 물건에 멍청한 질문을해서 미안하다.) – SrLegsini

+0

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

+0

모든 메소드를 사용해 보았습니다 ... 아무것도 작동하지 않는 것 같습니다 : / – SrLegsini