我希望有人之前也遇到过同样的问题,并且在这里提出问题要比反复试验更快.
我有一个Java 8项目,在这里尝试使用Liquibase,并从我的实体生成我的变更日志:
liquibase --changeLogFile=changeLog.yaml
--url=hibernate:spring:com.example.domain?dialect=org.hibernate.dialect.MySQL5InnoDBDialect
--logLevel=debug generateChangeLog
我收到以下错误:
SEVERE 11/04/15 09:55: liquibase: Failed to scan classpath for unlisted classes
liquibase.exception.DatabaseException: javax.persistence.PersistenceException: Failed to scan classpath for unlisted classes
...
Caused by: org.springframework.core.NestedIOException: ASM ClassReader failed to parse class file - probably due to a new Java class file version that isn't supported yet: file [.../Example.class]; ...
我使用Java 7编译了项目,并且liquibase运行正常.
Liquibase版本:3.3.2
Liquibase Hibernate4.2版本:3.5
由于liquibase是开源的,因此我可以尝试使用Java 8重建它,但是我不知道它是否会有所帮助.
解决方法:
异常表明问题出在Spring的类读取器中,您是否正在使用最新的Spring版本?最新的Spring适用于所有Java 6-8,因此,如果升级Spring,应该不会有问题.
另外,您的运行时Java 8也是如此吗?您可能安装了超过JVM,例如运行时为7,但您使用的是JDK8,则可以使用Java8来构建项目,但是当然它不能在Java7环境中运行.