我在 MS SQL Server 2005 中有数据库
我在 java 8 上编写了 java 项目。我的项目位于 Windows 7 Professional 的机器(64 位)。
我使用这个 jar:
sqljdbc4.jar
连接到 MS SQL Server 2005。
但是当我启动我的应用程序时,我收到错误:
[java] log4j: setFile ended
[java] log4j: Appender [File] to be rolled at midnight.
[java] log4j: Adding appender named [File] to category [root].
[java] [25.05.2019 15:11:44.979] com.myproject.common.LNFSetter.setLNF(LNFSetter.java:60) TRACE:
[java] lookAndFeelName=Windows
[java] lookAndFeelClassName=com.sun.java.swing.plaf.windows.WindowsLookAndFeel
[java] Exception in thread "main" java.lang.UnsupportedClassVersionError: com/microsoft/sqlserver/jdbc/SQLServerDriver has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0
[java] at java.lang.ClassLoader.defineClass1(Native Method)
[java] at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
[java] at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
[java] at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
[java] at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
[java] at java.net.URLClassLoader$1.run(URLClassLoader.java:368)
[java] at java.net.URLClassLoader$1.run(URLClassLoader.java:362)
[java] at java.security.AccessController.doPrivileged(Native Method)
[java] at java.net.URLClassLoader.findClass(URLClassLoader.java:361)
[java] at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
[java] at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)
[java] at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
[java] at java.lang.Class.forName0(Native Method)
[java] at java.lang.Class.forName(Class.java:264)
[java] at com.myproject.db.DBManagerContext.initConnection(DBManagerContext.java:69)
[java] at com.myproject.db.DBManagerContext.initialize(DBManagerContext.java:94)
[java] at com.myproject.db.DBManagerContext.<init>(DBManagerContext.java:102)
[java] at com.myproject.db.DBManagerContext.getInstance(DBManagerContext.java:115)
[java] at com.myproject.common.SystemOptions.getDBManagerContext(SystemOptions.java:382)
[java] at com.myproject.m2document.M2DocumentManager.initialize(M2DocumentManager.java:42)
[java] at com.myproject.m2document.M2DocumentManager.<init>(M2DocumentManager.java:60)
[java] at com.myproject.m2document.M2DocumentManager.getInstance(M2DocumentManager.java:35)
[java] at com.myproject.views.ca.scroller.AccountsScroller.init(AccountsScroller.java:182)
[java] at com.myproject.views.ca.scroller.AccountsScroller.<init>(AccountsScroller.java:160)
[java] at com.myproject.views.ca.MainScreenView.<init>(MainScreenView.java:103)
[java] at com.myproject.Main.<init>(Main.java:42)
[java] at com.myproject.Main.main(Main.java:54)
这是我的应用程序的片段:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Vector;
private void initConnection(String suffixURL) throws ClassNotFoundException, SQLException {
String driverName = UserOptions.getOptionsDBDriverName();
Class.forName(driverName); // ERROR IN THIS LINE
String url = null;
String databaseType = UserOptions.getOptionsDBURLType();
String host = UserOptions.getOptionsDBURLHost();
String port = UserOptions.getOptionsDBURLPort();
String databaseName = UserOptions.getOptionsDBURLName();
if (suffixURL == null) {
url = UserOptions.getOptionsAdditionalDBURL(databaseType, host, port, databaseName);
} else {
url = suffixURL;
}
String userName = UserOptions.getOptionsDBUserName();
String password = UserOptions.getOptionsDBPassword();
connection = DriverManager.getConnection(url, userName, password);
}
此行错误:
Class.forName(driverName); // ERROR IN THIS LINE
评论:
driver name=com.microsoft.sqlserver.jdbc.SQLServerDriver
附注我无法升级到jdk 9。我只能使用jdk 8
我通过搜索引擎为新人写了答案。
线程“main”java.lang.UnsupportedClassVersionError中出现异常: com/microsoft/sqlserver/jdbc/SQLServerDriver 已由 更新版本的 Java 运行时(类文件版本 55.0),
表示
.jar
文件是用比您计算机上的 Java 版本更新的版本编译的。
此版本的 Java 运行时仅识别最高 52.0 的类文件版本
表示您的计算机的 Java 级别较低,如下表所示。您应该升级您的 Java 或从 here 选择适当版本的 Mssql java 文件。
Java SE 18 62 003e
Java SE 17 61 003d
Java SE 16 60 003c
Java SE 15 59 003b
Java SE 14 58 003a
Java SE 13 57 0039
Java SE 12 56 0038
Java SE 11 55 0037
Java SE 10 54 0036
Java SE 9 53 0035
Java SE 8 52 0034
Java SE 7 51 0033
Java SE 6 50 0032
Java SE 5 49 0031
JDK 1.4 48 0030
JDK 1.3 47 002f
JDK 1.2 46 002e
JDK 1.1 45 002d
在我执行了有问题的方法后,我得到了结果。
如果您使用maven,只需降低依赖项中jar的版本即可。 尝试将其添加到您的 pom 文件中:
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>mssql-jdbc</artifactId>
<version>12.2.0.jre8</version>
</dependency>
我尝试了上述方法,升级到12.2.0.jre8版本和降级到10.2.0.jre8均失败。你能帮我吗?