简体   繁体   English

类路径设置,但是:java.lang.ClassNotFoundException:com.microsoft.sqlserver.jdbc.SQLServerDriver

[英]Classpath set, but: java.lang.ClassNotFoundException: com.microsoft.sqlserver.jdbc.SQLServerDriver

Okay, I'm confused. 好的,我很困惑。 My SQL Server JAR is here: 我的SQL Server JAR在这里:

     Volume in drive C has no label.
 Volume Serial Number is 8008-2D93

 Directory of c:\temp

03/07/2014  09:38 AM    <DIR>          .
03/07/2014  09:38 AM    <DIR>          ..
03/05/2014  10:34 PM           222,417 output.exd
02/17/2012  02:45 PM           563,117 sqljdbc.jar
02/17/2012  02:45 PM           584,207 sqljdbc4.jar
               3 File(s)      1,369,741 bytes
               2 Dir(s)  21,865,553,920 bytes free

My Classpath is set: 我的Classpath设置为:

C:\WINDOWS\system32>echo %CLASSPATH%
.;C:\Program Files (x86)\Java\jre7\lib\ext\QTJava.zip;c:\temp\sqljdbc4.jar

Its a JDBC 4.0 driver, so I shouldn't need to do this, but I've tried setting the class name. 它是一个JDBC 4.0驱动程序,所以我不需要这样做,但我已经尝试设置类名。

Properties connectionProps = new Properties();
            connectionProps.put("user", this.jdbcUser);
            connectionProps.put("password", this.jdbcPass);
            Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
            conn = DriverManager.getConnection(this.jdbcUrl, connectionProps);

Still I execute my program and I'm getting the error: 我仍然执行我的程序,我收到错误:

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

C:\WINDOWS\system32>java -jar "C:\Users\MYUSER\Documents\NetBeansProjects\myappSource\dist\myappSource.jar" -u MYUSER -p MYPASS -j "jdbc:sqlserver://127.0.0.1\\msqlserver:1433;database=MYDB"
Mar 07, 2014 9:49:54 AM filters.myapp.dao.db.DbSwitcher getDatabaseForUrl
SEVERE: jdbc:sqlserver://127.0.0.1\\msqlserver:1433;database=MYDB
Mar 07, 2014 9:49:54 AM filters.myapp.dao.db.Database connect
SEVERE: null
java.lang.ClassNotFoundException: com.microsoft.sqlserver.jdbc.SQLServerDriver
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Unknown Source)
        at filters.myapp.dao.db.Database.connect(Database.java:217)
        at filters.myapp.dao.db.Database.<init>(Database.java:38)
        at filters.myapp.dao.db.MssqlDb.<init>(MssqlDb.java:15)
        at filters.myapp.dao.db.DbSwitcher.getDatabaseForUrl(DbSwitcher.java:14)
        at filters.myapp.UserInterface.cli(UserInterface.java:76)
        at filters.myapp.UserInterface.<init>(UserInterface.java:34)
        at filters.myapp.UserInterface.main(UserInterface.java:46)

In case it matters, I'm running Windows 8.1. 如果重要,我正在运行Windows 8.1。 I've tried the command prompt both as an admin and as not. 我已经尝试过作为管理员和不是的命令提示符。

Java info: Java信息:

C:\WINDOWS\system32>java -version
java version "1.7.0_51"
Java(TM) SE Runtime Environment (build 1.7.0_51-b13)
Java HotSpot(TM) 64-Bit Server VM (build 24.51-b03, mixed mode)

Any ideas? 有任何想法吗?

SQL Server is SQL Server Express 2012. SQL Server是SQL Server Express 2012。

If you pass -jar to java.exe then the classpath is taken from the specified Jar file's manifest; 如果将-jar传递给java.exe,那么类路径将从指定的Jar文件清单中获取; all external classpath settings (eg %CLASSPATH%) are ignored. 将忽略所有外部类路径设置(例如%CLASSPATH%)。

Do one of: 做其中一个:

  1. Use java -cp ...\\myapp.jar MainClassName 使用java -cp ... \\ myapp.jar MainClassName

  2. Put sqljdbc.jar into the Class-Path field in myapp.jar's manifest. 将sqljdbc.jar放入myapp.jar清单中的Class-Path字段。

  3. Discover and load sqljdbc.jar programmatically. 以编程方式发现并加载sqljdbc.jar。

copy sqljdbc4.jar under WebContent-->WEB_INF -->lib folder. 在WebContent - > WEB_INF - > lib文件夹下复制sqljdbc4.jar。 This resolved my problem. 这解决了我的问题。

set the class path for sqljdbc4.jar 设置sqljdbc4.jar的类路径

CLASSPATH= D:\sqljdbc_4.0.2206.100_enu\sqljdbc_4.0\enu\sqljdbc4.jar;

if you are eclipse user remove unnecessary .jar file sqljdbc 如果你是eclipse用户删除不必要的.jar文件sqljdbc

If you programme application ZK, then put sqljdbc4.jar in the folder WebContent -> WEB_INF -> lib . 如果您编写应用程序ZK,则将sqljdbc4.jar放在WebContent - > WEB_INF - > lib文件夹中。

Reference: Anand's comment. 参考: Anand的评论。

Open a new command prompt, and try with steps as below, its not good to work inside C:\\WINDOWS\\system32 打开一个新的命令提示符,并尝试使用如下步骤,它不适合在C:\\ WINDOWS \\ system32中工作

The issue says the sqljdbc4.jar is not properly set in the classpath. 问题是sqljdbc4.jar未在类路径中正确设置。

        C:\Test
        set classpath=%classpath%;.;c:\temp\sqljdbc4.jar
        java -jar "C:\Users\MYUSER\Documents\NetBeansProjects\myappSource\dist\myappSource.jar" -u MYUSER -p MYPASS -j "jdbc:sqlserver://127.0.0.1\\msqlserver:1433;database=MYDB"

I got this error after updating my Eclipse STS, it turned out my server forgot all of its configuration info during the update. 更新我的Eclipse STS后出现此错误,结果发现我的服务器在更新期间忘记了所有配置信息。 I had to set up the server's classpath and environment variables all over again and that fixed the issue. 我不得不重新设置服务器的类路径和环境变量,这解决了问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 java.lang.ClassNotFoundException:com.microsoft.sqlserver.jdbc.SQLServerDriver - java.lang.ClassNotFoundException: com.microsoft.sqlserver.jdbc.SQLServerDriver 从 Java 连接到 SQ 服务器时出错:java.lang.ClassNotFoundException:com.microsoft.sqlserver.jdbc.SQLServerDriver - Error connecting to SQ Server from Java: java.lang.ClassNotFoundException: com.microsoft.sqlserver.jdbc.SQLServerDriver java.lang.ClassNotFoundException:无法在新的 docker 容器上加载 class:com.microsoft.sqlserver.jdbc.SQLServerDriver - java.lang.ClassNotFoundException: Unable to load class: com.microsoft.sqlserver.jdbc.SQLServerDriver on new docker container java.lang.ClassNotFoundException:创建jar后的com.microsoft.sqlserver.jdbc.SQLServerDriver - java.lang.ClassNotFoundException: com.microsoft.sqlserver.jdbc.SQLServerDriver after creating a jar java.lang.ClassNotFoundException:com.microsoft.sqlserver.jdbc.SQLServerDriver找不到javax.net.ssl.SSLSocket - java.lang.ClassNotFoundException: javax.net.ssl.SSLSocket not found by com.microsoft.sqlserver.jdbc.SQLServerDriver java.lang.ClassNotFoundException:Maven项目中的com.microsoft.sqlserver.jdbc.SQLServerDriver - java.lang.ClassNotFoundException: com.microsoft.sqlserver.jdbc.SQLServerDriver in Maven project java.lang.ClassNotFoundException:com / microsoft / sqlserver / jdbc / SQLServerDriver - java.lang.ClassNotFoundException: com/microsoft/sqlserver/jdbc/SQLServerDriver 在命令行上运行 java 时显示错误消息“java.lang.ClassNotFoundException: com.microsoft.sqlserver.jdbc.SQLServerDriver” - Error message "java.lang.ClassNotFoundException: com.microsoft.sqlserver.jdbc.SQLServerDriver" is shown when run java on command line java.lang.ClassNotFoundException: com.microsoft.sqlserver.jdbc.SQLServerDriver despite the fact it is in dependencies of gradle.build file - java.lang.ClassNotFoundException: com.microsoft.sqlserver.jdbc.SQLServerDriver despite the fact it is in dependencies of gradle.build file 在Servlet请求方法中创建到SQL Server DB的连接“ java.lang.ClassNotFoundException:com.microsoft.sqlserver.jdbc.SQLServerDriver” - Create a connection to SQL Server DB inside Servlet request Thows “java.lang.ClassNotFoundException: com.microsoft.sqlserver.jdbc.SQLServerDriver”
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM