SQL Server Java驱动程序不能在类路径中工作

我已经写了一个简单的Java文件来处理一些与SQL服务器集成的SQL。

我下载了相应的驱动程序,并将JAR存储在正确的类路径中,但只有在直接运行文件时才起作用。

我已经尝试从另一个类的sql类中调用方法,我得到以下错误:

java.lang.ClassNotFoundException:com.microsoft.sqlserver.jdbc.SQLServerDriver

我明白,这个问题是有据可查的,但它并没有解决我独特的问题,即它在文件中的作品,而不是外部。

另一个问题是程序关闭后重建我的程序忘记了JAR被添加为一个库,并要求我再次添加,这是不好的。

我已经尝试通过手动复制和粘贴到XML配置文件添加类路径,但这是一个hacky解决方案,我宁愿做正确的。 请让我知道我要去哪里错了。

<CLASSES> <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.ow2.asm/asm/5.0.4/da08b8cce7bbf903602a25a3a163ae252435795/asm-5.0.4.jar!/" /> <root url="jar://$USER_HOME$/IdeaProjects/r3prototypingCFS/contracts/src/main/kotlin/com/r3corda/protocols/sqljdbc42.jar!/" /> </CLASSES> 
 Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); 

使用jdts驱动程序..它使用Sql Server 2014。

的pom.xml

 <dependencies> <!-- https://mvnrepository.com/artifact/net.sourceforge.jtds/jtds --> <dependency> <groupId>net.sourceforge.jtds</groupId> <artifactId>jtds</artifactId> <version>1.3.1</version> </dependency> </dependencies> 

和src

 import java.sql.*; public class Main { public static void main(String[] args) throws SQLException { // write your code here Connection conn = null; ResultSet rs = null; String url = "jdbc:jtds:sqlserver://localhost:1433/DATABASENAME"; String driver = "net.sourceforge.jtds.jdbc.Driver"; String userName = "username"; String password = "yourpassword"; try { Class.forName(driver); conn = DriverManager.getConnection(url, userName, password); System.out.println("Connected to the database!!! Getting table list..."); Statement stmt = conn.createStatement(); String sql = "SELECT top 10 PhoneNumber,RegistrationDate\n" + " \n" + " FROM tblProductRegistration"; // ResultSet resultSet = stmt.executeQuery(sql); // String selectSQL = "SELECT USER_ID, USERNAME FROM DBUSER WHERE USER_ID = ?"; //Statement stmt = conn.createStatement(); ResultSet resultSet = stmt.executeQuery(sql); // preparedStatement.setInt(1, 1001); // ResultSet resultSet = preparedStatement.executeQuery( ); //STEP 5: Extract data from result set while(resultSet.next()){ //Retrieve by column name String PhoneNumber = resultSet.getString("PhoneNumber"); String RegistrationDate = resultSet.getString("RegistrationDate"); //Display values System.out.print("PhoneNumber: " + PhoneNumber); System.out.print("RegistrationDate: " + RegistrationDate); } } catch (Exception e) { e.printStackTrace(); } finally { conn.close(); rs.close(); } } }