복붙노트

[SQL] SQL 서버 JDBC와 "NoClassDefFoundError를 모두 javax / XML / 바인드 / DatatypeConverter"

SQL

SQL 서버 JDBC와 "NoClassDefFoundError를 모두 javax / XML / 바인드 / DatatypeConverter"

나는 최근 인 IntelliJ로 전환하지만 내 localDB에 연결하는 하드를 찾는거야. 동일한 코드는 이클립스 좋은 일했다. 또한 이미 모듈 의존성과 sqljdbc42.jar을 추가했습니다.

package com.enter;
import java.sql.*;

public class SqlConnect {
    private String username, password, url;
    public Connection conn;

    public SqlConnect() {
        username = "user=admin;";
        password = "password=admin";
        url = "jdbc:sqlserver://Bossman-PC\\SQL2014TRAINING;databaseName=EnterDB;";
        Connect();
    }
    public SqlConnect(String user, String pass) {
        username = user;
        password = pass;
        url = "jdbc:sqlserver://Bossman-PC\\SQL2014TRAINING;databaseName=EnterDB;";
        Connect();
    }

    public void Connect() { //Loads sql driver and creates a connection object with local database
        try {
            Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
            String connectionUrl = url + username + password;
            conn = DriverManager.getConnection(connectionUrl);
            System.out.println("Connected.");
        } catch(Exception e) {
            e.printStackTrace();
        }
    }

    public Connection getConnection() {
        return conn;
    }


}

오류 발생 :

Exception in thread "main" java.lang.NoClassDefFoundError: javax/xml/bind/DatatypeConverter
at com.microsoft.sqlserver.jdbc.SQLServerConnection.sendLogon(SQLServerConnection.java:4098)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.logon(SQLServerConnection.java:3160)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.access$100(SQLServerConnection.java:43)
at com.microsoft.sqlserver.jdbc.SQLServerConnection$LogonCommand.doExecute(SQLServerConnection.java:3123)
at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:7505)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:2445)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:1981)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:1628)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectInternal(SQLServerConnection.java:1459)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:773)
at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:1168)
at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:678)
at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:252)
at com.enter.SqlConnect.Connect(SqlConnect.java:25)
at com.enter.SqlConnect.<init>(SqlConnect.java:12)
at com.enter.Login.makeConnection(Login.java:26)
at com.enter.Login.<init>(Login.java:16)
at com.enter.Execute.initLogin(Execute.java:14)
at com.enter.Execute.main(Execute.java:9)
Caused by: java.lang.ClassNotFoundException: javax.xml.bind.DatatypeConverter
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:582)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:185)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:496)
... 19 more

Process finished with exit code 1

어떤 도움을 크게 감상 할 수있다. 또한 오버로드 DriverManager.getConnection를 (URL, 사용자, 패스) 메소드와 같은 오류를 시도했습니다.

해결법

  1. ==============================

    1.자바 9+ 호환성을 위해, 당신은 jreXX 버전 접미사로 식별 사용하는 자바 버전을 버전 6.4.0 이상을 사용해야합니다. ) 낮은 가장 높은 버전을 사용하거나, 자바 버전과 동일.

    자바 9+ 호환성을 위해, 당신은 jreXX 버전 접미사로 식별 사용하는 자바 버전을 버전 6.4.0 이상을 사용해야합니다. ) 낮은 가장 높은 버전을 사용하거나, 자바 버전과 동일.

    GitHub의에 Microsoft에서 언급 한 바와 같이 :

    당신도 자바 (8) JDK를 사용하여 전환 할 수 있습니다, 또는 당신은 자바 9 JDK와 프로젝트 및 사용에 자신의 'JDBC4.3'지점에서 마이크로 소프트의 개발 코드를 통합 할 수 있습니다.

  2. ==============================

    2.당신이 여분의 JVM 매개 변수를 포함하는 경우 작업이를 얻을 수 있습니다

    당신이 여분의 JVM 매개 변수를 포함하는 경우 작업이를 얻을 수 있습니다

    --add-modules=java.se.ee
    

    여기 갈 것 인 IntelliJ에서 실행 구성에서 어떤

    이 후 미래 제거되지 않는 것으로 단지 정말 마이크로 소프트 릴리스 자바 (9) 호환 JDBC 드라이버 때까지 임시 해결책 그래서 이러한 자바 (10)에서 제거 될 수 있도록 자바 (9)에 표시 한 몇 가지 모듈이 포함되어 있습니다.

    보기에이 Java9 마이그레이션 가이드에서 찾을 수 있습니다

  3. from https://stackoverflow.com/questions/47422579/noclassdeffounderror-javax-xml-bind-datatypeconverter-with-sql-server-jdbc by cc-by-sa and MIT license