首页 > 解决方案 > 带有类文件版本错误的 Java 运行时错误

问题描述

我已经下载了几乎所有可以找到的 JDBC 驱动程序版本以及多个版本的 JAVA。

每次我尝试运行 SchemaSpy 时,都会收到以下错误:

Exception in thread "main" java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:48)
        at org.springframework.boot.loader.Launcher.launch(Launcher.java:87)
        at org.springframework.boot.loader.Launcher.launch(Launcher.java:50)
        at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:51)
Caused by: java.lang.UnsupportedClassVersionError: com/microsoft/sqlserver/jdbc/SQLServerDriver has been compiled by a more recent version of the Java Runtime (class file version 57.0), this version of the Java Runtime only recognizes class file versions up to 52.0
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(Unknown Source)
        at java.security.SecureClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.access$100(Unknown Source)
        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 java.lang.ClassLoader.loadClass(Unknown Source)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Unknown Source)
        at org.schemaspy.input.dbms.DbDriverLoader.getDriverClass(DbDriverLoader.java:170)
        at org.schemaspy.input.dbms.DbDriverLoader.getDriver(DbDriverLoader.java:144)
        at org.schemaspy.input.dbms.DbDriverLoader.getConnection(DbDriverLoader.java:93)
        at org.schemaspy.input.dbms.DbDriverLoader.getConnection(DbDriverLoader.java:75)
        at org.schemaspy.input.dbms.service.SqlService.connect(SqlService.java:70)
        at org.schemaspy.SchemaAnalyzer.analyze(SchemaAnalyzer.java:220)
        at org.schemaspy.SchemaAnalyzer.analyze(SchemaAnalyzer.java:123)
        at org.schemaspy.cli.SchemaSpyRunner.runAnalyzer(SchemaSpyRunner.java:98)
        at org.schemaspy.cli.SchemaSpyRunner.run(SchemaSpyRunner.java:87)
        at org.schemaspy.Main.main(Main.java:55)
        ... 8 mor

关于如何解决这个问题的任何想法?

标签: schemaspy

解决方案


@texnoob 我在尝试使用旧数据库类型运行 SchemaSpy 时看到了这一点。尝试使用更高版本的 SQL Server-t mssql08而不是。-t mssql

使用命令行开关运行 SchemaSpy-dbhelp应该返回支持的类型,但它对我不起作用。查找类型的另一种方法是在允许您浏览存档(WinZip、WinRAR 等)的应用程序中打开 SchemaSpy JAR 文件。打开后,您将在路径“BOOT-INF\classes\org\schemaspy\types”中找到列出的数据库类型。

如果更改数据库类型仍然不起作用,请提供您发出的命令行语句以供进一步分析。


推荐阅读