Domanda

I am using SQL Server 2012, and liquibase version 2.0.1 to support databse updates in a Java application(java version 1.7) .

I want to migrate liquibase version to 3.x and I am taking help from liquibase site

It says Liquibase 3.0.0 is a drop-in replacement for any Liquibase 2.0.x version.

When I replace the existing version with 3.0.0 version jars along with dependencies I get the following error-

Liquibase updateSQL Failed: liquibase/database/structure/type/DataType

Detailed Error in Logs :

INFO 3/12/14 3:02 PM:liquibase: Successfully acquired change log lock
INFO 3/12/14 3:02 PM:liquibase: Successfully released change log lock
INFO 3/12/14 3:02 PM:liquibase: Successfully released change log lock
SEVERE 3/12/14 3:02 PM:liquibase: liquibase/database/structure/type/DataType
java.lang.NoClassDefFoundError: liquibase/database/structure/type/DataType
            at java.lang.Class.forName0(Native Method)
            at java.lang.Class.forName(Class.java:264)
            at liquibase.change.custom.CustomChangeWrapper.setClass(CustomChangeWrapper.java:84)
            at liquibase.parser.core.xml.XMLChangeLogSAXHandler.setProperty(XMLChangeLogSAXHandler.java:585)
            at liquibase.parser.core.xml.XMLChangeLogSAXHandler.setAllProperties(XMLChangeLogSAXHandler.java:517)
            at liquibase.parser.core.xml.XMLChangeLogSAXHandler.startElement(XMLChangeLogSAXHandler.java:405)
            at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(AbstractSAXParser.java:506)
            at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.startElement(XMLSchemaValidator.java:744)
            at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:376)
            at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2717)
            at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:607)
            at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:116)
            at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:489)
            at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:835)
            at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:764)
            at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:123)
            at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1210)
            at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:568)
            at liquibase.parser.core.xml.XMLChangeLogSAXParser.parse(XMLChangeLogSAXParser.java:101)
            at liquibase.parser.core.xml.XMLChangeLogSAXHandler.handleIncludedChangeLog(XMLChangeLogSAXHandler.java:561)
            at liquibase.parser.core.xml.XMLChangeLogSAXHandler.startElement(XMLChangeLogSAXHandler.java:164)
            at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(AbstractSAXParser.java:506)
            at com.sun.org.apache.xerces.internal.parsers.AbstractXMLDocumentParser.emptyElement(AbstractXMLDocumentParser.java:182)
            at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.emptyElement(XMLSchemaValidator.java:775)
            at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:353)
            at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2717)
            at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:607)
            at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:116)
            at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:489)
            at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:835)
            at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:764)
            at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:123)
            at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1210)
            at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:568)
            at liquibase.parser.core.xml.XMLChangeLogSAXParser.parse(XMLChangeLogSAXParser.java:101)
            at liquibase.Liquibase.getDatabaseChangeLog(Liquibase.java:216)
            at liquibase.Liquibase.update(Liquibase.java:194)
            at liquibase.Liquibase.update(Liquibase.java:253)
            at liquibase.Liquibase.update(Liquibase.java:236)
            at liquibase.integration.commandline.Main.doMigration(Main.java:894)
            at liquibase.integration.commandline.Main.main(Main.java:133)
Caused by: java.lang.ClassNotFoundException: liquibase.database.structure.type.DataType
            at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
            at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
            at java.security.AccessController.doPrivileged(Native Method)
            at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
            at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
            at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
            at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
            ... 41 more
È stato utile?

Soluzione

3.0 is a drop in replacement from a changelog structure standpoint, but there were some breaking underlying Java API changes which is why there was the version jump from 2.x to 3.x.

http://www.liquibase.org/v3_upgrade.html lists some of the changes but your particular problem seems to be that you have a class that is using the liquibase.database.structure.type.DataType object that moved to liquibase.structure.core.DataType in 3.0.

If you recompile your custom change classes against liquibase 3.0 the compiler should find this and any other API changes.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top