【问题标题】:Not able to connect MS SQL server 2008 with java无法使用 java 连接 MS SQL Server 2008
【发布时间】:2012-06-07 10:47:50
【问题描述】:

我尝试用我的 MS SQL express 连接 java,我也下载了 sqljdbc4.jar

当我不关心 CLASSPATH 和所有内容时,我尝试执行我的程序(即使使用 sqljdbc

C:\Program Files (x86)\Java\jre6\lib

我收到以下错误

java.lang.ClassNotFoundException: com.microsoft.jdbc.sqlserver.SQLServerDriver
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:169)
    at Connect.getConnection(Connect.java:24)
    at Connect.displayDbProperties(Connect.java:42)
    at Connect.main(Connect.java:78)

getConnection() 中的错误跟踪:com.microsoft.jdbc.sqlserver.SQLServerDriver 错误:没有活动连接

但是,如果我尝试将 CLASSPATH 变量设置为指向 sqljdbc4.jar,则 ClassNotHoundExcepetion 会在识别我的类名时发生。

需要立即帮助。请回复。

我使用命令行模式调用它,我尝试在 Windows 7 的系统变量对话框中设置类路径。当我这样做或使用 set CLASSPATH="C:\temp\sqljdbc4.jar" 时 jre 失败识别我的程序的主类并抛出

Exception in thread "main" java.lang.NoClassDefFoundError: Connect
Caused by: java.lang.ClassNotFoundException: Connect
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)

找不到主类:Connect。程序将退出。

所以我在这里不知所措。

【问题讨论】:

  • 我认为 jar 文件必须在 C:\Program Files (x86)\Java\jre6\lib\ext 而不仅仅是在 lib 中。
  • 也这样做了..但无济于事! :(
  • 您确定您使用的是该 java 实例而不是另一个实例来运行应用程序吗?如果不是,您只需要以另一种方式将类添加到类路径中。
  • 我很确定我只使用 32 位版本来运行程序,并且我已将我的 home 和 path var 设置为仅指向它

标签: java sql-server database connection


【解决方案1】:

你的问题是因为classloader没有找到驱动jar,你是怎么启动你的程序的? 如果是命令行,您是否输入了-cp-classpath?或者如果是 web 应用,添加到 lib 文件夹?

【讨论】:

  • 我已经发布了由于空间不足而在问题本身中尝试其他方法时发生的事故。请仔细阅读并回复
  • 试着看一下 Sai Ye Yan 的下面的说明,但是,你不明白我,你可以把 jar 放到 SYSTEM 类路径中,只是放到你的应用程序的 CLASSPATH 中,比如 java -cp -jar
  • 如果你能拼出整个命令会很有帮助,因为我是新手,对 java 不太了解。但是,当我尝试使用“java -cp sqljdbc4.jar connect”设置类路径时,它会抛出“线程“主”java.lang.NoClassDefFoundError:Connect 中的异常”..所以进一步了解它会很棒!
  • 您的程序 jar fie 的名称是什么?包含 main (String [] args) 方法的类的名称是什么?在此信息之后,我可以为您提供 sart 行
【解决方案2】:

您应该设置类路径以包含 sqljdbc4.jar 文件。详情见here

【讨论】:

  • 问题是当我将类路径设置为指向 sqljdbc.jar 时 JVM 无法识别 Main 方法并在我的类“连接”本身上抛出 ClassNotFoundException :(
猜你喜欢
  • 2020-02-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多