|
Hi MyBatis/Guice team,
I have getting the below exception: Exception in thread "main" java.lang.NoSuchMethodError: com.google.inject.util.Providers.guicify(Ljavax/inject/Provider;)Lcom/google/inject/Provider; at org.mybatis.guice.AbstractMyBatisModule.bindMapper(AbstractMyBatisModule.java:62) at org.mybatis.guice.MyBatisModule.addMapperClass(MyBatisModule.java:458) at com.metricstream.itgrc.ucf.guice.modules.UcfMybatisModule.initialize(UcfMybatisModule.java:23) at org.mybatis.guice.MyBatisModule.internalConfigure(MyBatisModule.java:98) at org.mybatis.guice.AbstractMyBatisModule.configure(AbstractMyBatisModule.java:53) at com.google.inject.AbstractModule.configure(AbstractModule.java:59) at com.google.inject.spi.Elements$RecordingBinder.install(Elements.java:223) at com.google.inject.spi.Elements.getElements(Elements.java:101) at com.google.inject.internal.InjectorShell$Builder.build(InjectorShell.java:127) at com.google.inject.internal.InjectorBuilder.build(InjectorBuilder.java:103) at com.google.inject.Guice.createInjector(Guice.java:93) at com.google.inject.Guice.createInjector(Guice.java:70) at com.google.inject.Guice.createInjector(Guice.java:60) at com.metricstream.itgrc.ucf.service.TempAsset1.main(TempAsset1.java:41) MyBatisModule Code: package com.metricstream.itgrc.ucf.guice.modules; import java.util.Properties; import javax.sql.DataSource; import org.apache.ibatis.transaction.jdbc.JdbcTransactionFactory; import org.mybatis.guice.MyBatisModule; import org.mybatis.guice.datasource.builtin.PooledDataSourceProvider; import com.google.inject.name.Names; import com.metricstream.itgrc.core.service.ItgrcDataSourceProvider; import com.metricstream.itgrc.ucf.abator.dao.ExUcfAssetBasicinfoMapper; import com.metricstream.itgrc.ucf.abator.dao.ExUcfAssetMetadataMapper; import com.metricstream.itgrc.ucf.abator.dao.ExUcfAssetReferenceMapper; public class UcfMybatisModule extends MyBatisModule { @Override protected void initialize() { bindTransactionFactoryType(JdbcTransactionFactory.class); bind(DataSource.class).toProvider(ItgrcDataSourceProvider.class); addMapperClass(ExUcfAssetMetadataMapper.class); addMapperClass(ExUcfAssetBasicinfoMapper.class); addMapperClass(ExUcfAssetReferenceMapper.class); } protected static Properties createTestProperties() { Properties myBatisProperties = new Properties(); myBatisProperties.setProperty("mybatis.environment.id", "development"); return myBatisProperties; } } DataSourceProvider Code: package com.metricstream.itgrc.core.service; import javax.sql.DataSource; import com.google.inject.Provider; public class ItgrcDataSourceProvider implements Provider<DataSource> { @Override public DataSource get() { return new ItgrcDataSource(); } } DataSource Code: package com.metricstream.itgrc.core.service; import java.io.PrintWriter; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import javax.sql.DataSource; import com.metricstream.log.Logger; public class ItgrcDataSource implements DataSource { private Connection con = null; @Override public PrintWriter getLogWriter() throws SQLException { return new PrintWriter(Logger.getLogPrinter()); } @Override public void setLogWriter(PrintWriter out) throws SQLException { } @Override public void setLoginTimeout(int seconds) throws SQLException { } @Override public int getLoginTimeout() throws SQLException { return 0; } @Override public <T> T unwrap(Class<T> iface) throws SQLException { return null; } @Override public boolean isWrapperFor(Class<?> iface) throws SQLException { return false; } @Override public Connection getConnection() throws SQLException { synchronized (this) { if (con == null) { try { String driverName = "oracle.jdbc.driver.OracleDriver"; Class.forName(driverName); String serverName = "server.metricstream.com"; String portNumber = "1521"; String sid = "sid"; String url = "jdbc:oracle:thin:@" + serverName + ":" + portNumber + ":" + sid; String username = "user"; String password = "password"; con = DriverManager.getConnection(url, username, password); con.setAutoCommit(true); } catch (ClassNotFoundException e) { } catch (SQLException e) { } } } return con; } @Override public Connection getConnection(String username, String password) throws SQLException { return null; } } Main Method: public class TempAsset1 { private static final String CLASS_ID = AssetsList.class.getName(); @Inject private ExUcfAssetMetadataMapper metaDataDao; @Inject private ExUcfAssetBasicinfoMapper basicInfoDao; @Inject private ExUcfAssetReferenceMapper referenceDao; public static void main(String args[]) throws FileNotFoundException, AppException, SQLException { FileInputStream fi = new FileInputStream("UCF_Assets_List.xml"); IParser parser = new UcfAssetsListParser(); UCFAssetsList ucfa = (UCFAssetsList) parser.parse(fi); Injector injector = Guice.createInjector(new UcfMybatisModule()); TempAsset1 t1 = injector.getInstance(TempAsset1.class); t1.load(ucfa); } public void load(final UCFAssetsList ucfAssetsList) throws AppException, SQLException { AppLog.info(CLASS_ID, "load"); ... } } POM file <repositories> <repository> <id>guice-maven</id> <name>guice maven</name> <url>http://guice-maven.googlecode.com/svn/trunk</url> </repository> </repositories> <dependencies> <dependency> <groupId>ms-itgrc</groupId> <artifactId>ms-itgrc-core</artifactId> <version>6.0.1.0.0</version> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-io</artifactId> <version>1.3.2</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.0.6</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-guice</artifactId> <version>3.0</version> </dependency> <dependency> <groupId>com.google.code.guice</groupId> <artifactId>guice</artifactId> <version>2.0.1</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-guice</artifactId> <version>3.0</version> </dependency> </dependencies> Please let me know where did i go wrong? Thanks, GP |
|
Upgrade your versions...
<dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-guice</artifactId> <version>3.2</version> </dependency> <dependency> <groupId>com.google.inject</groupId> <artifactId>guice</artifactId> <version>3.0</version> </dependency> Jeff Butler On Mon, Feb 20, 2012 at 12:20 AM, Gopalakrishnan <[hidden email]> wrote: > Hi MyBatis/Guice team, > > I have getting the below exception: > Exception in thread "main" java.lang.NoSuchMethodError: > com.google.inject.util.Providers.guicify(Ljavax/inject/Provider;)Lcom/google/inject/Provider; > at > org.mybatis.guice.AbstractMyBatisModule.bindMapper(AbstractMyBatisModule.java:62) > at > org.mybatis.guice.MyBatisModule.addMapperClass(MyBatisModule.java:458) > at > com.metricstream.itgrc.ucf.guice.modules.UcfMybatisModule.initialize(UcfMybatisModule.java:23) > at > org.mybatis.guice.MyBatisModule.internalConfigure(MyBatisModule.java:98) > at > org.mybatis.guice.AbstractMyBatisModule.configure(AbstractMyBatisModule.java:53) > at com.google.inject.AbstractModule.configure(AbstractModule.java:59) > at > com.google.inject.spi.Elements$RecordingBinder.install(Elements.java:223) > at com.google.inject.spi.Elements.getElements(Elements.java:101) > at > com.google.inject.internal.InjectorShell$Builder.build(InjectorShell.java:127) > at > com.google.inject.internal.InjectorBuilder.build(InjectorBuilder.java:103) > at com.google.inject.Guice.createInjector(Guice.java:93) > at com.google.inject.Guice.createInjector(Guice.java:70) > at com.google.inject.Guice.createInjector(Guice.java:60) > at > com.metricstream.itgrc.ucf.service.TempAsset1.main(TempAsset1.java:41) > > MyBatisModule Code: > package com.metricstream.itgrc.ucf.guice.modules; > > import java.util.Properties; > > import javax.sql.DataSource; > > import org.apache.ibatis.transaction.jdbc.JdbcTransactionFactory; > import org.mybatis.guice.MyBatisModule; > import org.mybatis.guice.datasource.builtin.PooledDataSourceProvider; > > import com.google.inject.name.Names; > import com.metricstream.itgrc.core.service.ItgrcDataSourceProvider; > import com.metricstream.itgrc.ucf.abator.dao.ExUcfAssetBasicinfoMapper; > import com.metricstream.itgrc.ucf.abator.dao.ExUcfAssetMetadataMapper; > import com.metricstream.itgrc.ucf.abator.dao.ExUcfAssetReferenceMapper; > > public class UcfMybatisModule extends MyBatisModule { > > @Override > protected void initialize() { > bindTransactionFactoryType(JdbcTransactionFactory.class); > bind(DataSource.class).toProvider(ItgrcDataSourceProvider.class); > addMapperClass(ExUcfAssetMetadataMapper.class); > addMapperClass(ExUcfAssetBasicinfoMapper.class); > addMapperClass(ExUcfAssetReferenceMapper.class); > } > > protected static Properties createTestProperties() { > Properties myBatisProperties = new Properties(); > myBatisProperties.setProperty("mybatis.environment.id", > "development"); > return myBatisProperties; > } > } > > DataSourceProvider Code: > package com.metricstream.itgrc.core.service; > > import javax.sql.DataSource; > import com.google.inject.Provider; > > public class ItgrcDataSourceProvider implements Provider<DataSource> { > > @Override > public DataSource get() { > return new ItgrcDataSource(); > } > } > > DataSource Code: > package com.metricstream.itgrc.core.service; > > import java.io.PrintWriter; > import java.sql.Connection; > import java.sql.DriverManager; > import java.sql.SQLException; > > import javax.sql.DataSource; > > import com.metricstream.log.Logger; > > public class ItgrcDataSource implements DataSource { > private Connection con = null; > > @Override > public PrintWriter getLogWriter() throws SQLException { > return new PrintWriter(Logger.getLogPrinter()); > } > > @Override > public void setLogWriter(PrintWriter out) throws SQLException { > } > > @Override > public void setLoginTimeout(int seconds) throws SQLException { > } > > @Override > public int getLoginTimeout() throws SQLException { > return 0; > } > > @Override > public <T> T unwrap(Class<T> iface) throws SQLException { > return null; > } > > @Override > public boolean isWrapperFor(Class<?> iface) throws SQLException { > return false; > } > > @Override > public Connection getConnection() throws SQLException { > synchronized (this) { > if (con == null) { > try { > String driverName = "oracle.jdbc.driver.OracleDriver"; > Class.forName(driverName); > > String serverName = "server.metricstream.com"; > String portNumber = "1521"; > String sid = "sid"; > String url = "jdbc:oracle:thin:@" + serverName + ":" + > portNumber + ":" + sid; > String username = "user"; > String password = "password"; > con = DriverManager.getConnection(url, username, > password); > con.setAutoCommit(true); > } catch (ClassNotFoundException e) { > } catch (SQLException e) { > } > } > } > > return con; > } > > @Override > public Connection getConnection(String username, String password) throws > SQLException { > return null; > } > } > > Main Method: > public class TempAsset1 { > private static final String CLASS_ID = AssetsList.class.getName(); > @Inject > private ExUcfAssetMetadataMapper metaDataDao; > @Inject > private ExUcfAssetBasicinfoMapper basicInfoDao; > @Inject > private ExUcfAssetReferenceMapper referenceDao; > > public static void main(String args[]) throws FileNotFoundException, > AppException, SQLException { > FileInputStream fi = new FileInputStream("UCF_Assets_List.xml"); > IParser parser = new UcfAssetsListParser(); > UCFAssetsList ucfa = (UCFAssetsList) parser.parse(fi); > > Injector injector = Guice.createInjector(new UcfMybatisModule()); > TempAsset1 t1 = injector.getInstance(TempAsset1.class); > t1.load(ucfa); > } > > public void load(final UCFAssetsList ucfAssetsList) throws AppException, > SQLException { > AppLog.info(CLASS_ID, "load"); > ... > } > } > > POM file > <repositories> > <repository> > <id>guice-maven</id> > <name>guice maven</name> > <url>http://guice-maven.googlecode.com/svn/trunk</url> > </repository> > </repositories> > <dependencies> > <dependency> > <groupId>ms-itgrc</groupId> > <artifactId>ms-itgrc-core</artifactId> > <version>6.0.1.0.0</version> > </dependency> > <dependency> > <groupId>org.apache.commons</groupId> > <artifactId>commons-io</artifactId> > <version>1.3.2</version> > </dependency> > <dependency> > <groupId>org.mybatis</groupId> > <artifactId>mybatis</artifactId> > <version>3.0.6</version> > </dependency> > <dependency> > <groupId>org.mybatis</groupId> > <artifactId>mybatis-guice</artifactId> > <version>3.0</version> > </dependency> > <dependency> > <groupId>com.google.code.guice</groupId> > <artifactId>guice</artifactId> > <version>2.0.1</version> > </dependency> > <dependency> > <groupId>org.mybatis</groupId> > <artifactId>mybatis-guice</artifactId> > <version>3.0</version> > </dependency> > </dependencies> > > Please let me know where did i go wrong? > > Thanks, > GP > |
|
Thanks Jeff.
Issue is resolved. - GP On Feb 20, 5:18 pm, Jeff Butler <[hidden email]> wrote: > Upgrade your versions... > > <dependency> > <groupId>org.mybatis</groupId> > <artifactId>mybatis-guice</artifactId> > <version>3.2</version> > </dependency> > <dependency> > <groupId>com.google.inject</groupId> > <artifactId>guice</artifactId> > <version>3.0</version> > </dependency> > > Jeff Butler > > > > > > > > On Mon, Feb 20, 2012 at 12:20 AM, Gopalakrishnan <[hidden email]> wrote: > > Hi MyBatis/Guice team, > > > I have getting the below exception: > > Exception in thread "main" java.lang.NoSuchMethodError: > > com.google.inject.util.Providers.guicify(Ljavax/inject/Provider;)Lcom/google/inject/Provider; > > at > > org.mybatis.guice.AbstractMyBatisModule.bindMapper(AbstractMyBatisModule.java:62) > > at > > org.mybatis.guice.MyBatisModule.addMapperClass(MyBatisModule.java:458) > > at > > com.metricstream.itgrc.ucf.guice.modules.UcfMybatisModule.initialize(UcfMybatisModule.java:23) > > at > > org.mybatis.guice.MyBatisModule.internalConfigure(MyBatisModule.java:98) > > at > > org.mybatis.guice.AbstractMyBatisModule.configure(AbstractMyBatisModule.java:53) > > at com.google.inject.AbstractModule.configure(AbstractModule.java:59) > > at > > com.google.inject.spi.Elements$RecordingBinder.install(Elements.java:223) > > at com.google.inject.spi.Elements.getElements(Elements.java:101) > > at > > com.google.inject.internal.InjectorShell$Builder.build(InjectorShell.java:127) > > at > > com.google.inject.internal.InjectorBuilder.build(InjectorBuilder.java:103) > > at com.google.inject.Guice.createInjector(Guice.java:93) > > at com.google.inject.Guice.createInjector(Guice.java:70) > > at com.google.inject.Guice.createInjector(Guice.java:60) > > at > > com.metricstream.itgrc.ucf.service.TempAsset1.main(TempAsset1.java:41) > > > MyBatisModule Code: > > package com.metricstream.itgrc.ucf.guice.modules; > > > import java.util.Properties; > > > import javax.sql.DataSource; > > > import org.apache.ibatis.transaction.jdbc.JdbcTransactionFactory; > > import org.mybatis.guice.MyBatisModule; > > import org.mybatis.guice.datasource.builtin.PooledDataSourceProvider; > > > import com.google.inject.name.Names; > > import com.metricstream.itgrc.core.service.ItgrcDataSourceProvider; > > import com.metricstream.itgrc.ucf.abator.dao.ExUcfAssetBasicinfoMapper; > > import com.metricstream.itgrc.ucf.abator.dao.ExUcfAssetMetadataMapper; > > import com.metricstream.itgrc.ucf.abator.dao.ExUcfAssetReferenceMapper; > > > public class UcfMybatisModule extends MyBatisModule { > > > @Override > > protected void initialize() { > > bindTransactionFactoryType(JdbcTransactionFactory.class); > > bind(DataSource.class).toProvider(ItgrcDataSourceProvider.class); > > addMapperClass(ExUcfAssetMetadataMapper.class); > > addMapperClass(ExUcfAssetBasicinfoMapper.class); > > addMapperClass(ExUcfAssetReferenceMapper.class); > > } > > > protected static Properties createTestProperties() { > > Properties myBatisProperties = new Properties(); > > myBatisProperties.setProperty("mybatis.environment.id", > > "development"); > > return myBatisProperties; > > } > > } > > > DataSourceProvider Code: > > package com.metricstream.itgrc.core.service; > > > import javax.sql.DataSource; > > import com.google.inject.Provider; > > > public class ItgrcDataSourceProvider implements Provider<DataSource> { > > > @Override > > public DataSource get() { > > return new ItgrcDataSource(); > > } > > } > > > DataSource Code: > > package com.metricstream.itgrc.core.service; > > > import java.io.PrintWriter; > > import java.sql.Connection; > > import java.sql.DriverManager; > > import java.sql.SQLException; > > > import javax.sql.DataSource; > > > import com.metricstream.log.Logger; > > > public class ItgrcDataSource implements DataSource { > > private Connection con = null; > > > @Override > > public PrintWriter getLogWriter() throws SQLException { > > return new PrintWriter(Logger.getLogPrinter()); > > } > > > @Override > > public void setLogWriter(PrintWriter out) throws SQLException { > > } > > > @Override > > public void setLoginTimeout(int seconds) throws SQLException { > > } > > > @Override > > public int getLoginTimeout() throws SQLException { > > return 0; > > } > > > @Override > > public <T> T unwrap(Class<T> iface) throws SQLException { > > return null; > > } > > > @Override > > public boolean isWrapperFor(Class<?> iface) throws SQLException { > > return false; > > } > > > @Override > > public Connection getConnection() throws SQLException { > > synchronized (this) { > > if (con == null) { > > try { > > String driverName = "oracle.jdbc.driver.OracleDriver"; > > Class.forName(driverName); > > > String serverName = "server.metricstream.com"; > > String portNumber = "1521"; > > String sid = "sid"; > > String url = "jdbc:oracle:thin:@" + serverName + ":" + > > portNumber + ":" + sid; > > String username = "user"; > > String password = "password"; > > con = DriverManager.getConnection(url, username, > > password); > > con.setAutoCommit(true); > > } catch (ClassNotFoundException e) { > > } catch (SQLException e) { > > } > > } > > } > > > return con; > > } > > > @Override > > public Connection getConnection(String username, String password) throws > > SQLException { > > return null; > > } > > } > > > Main Method: > > public class TempAsset1 { > > private static final String CLASS_ID = AssetsList.class.getName(); > > @Inject > > private ExUcfAssetMetadataMapper metaDataDao; > > @Inject > > private ExUcfAssetBasicinfoMapper basicInfoDao; > > @Inject > > private ExUcfAssetReferenceMapper referenceDao; > > > public static void main(String args[]) throws FileNotFoundException, > > AppException, SQLException { > > FileInputStream fi = new FileInputStream("UCF_Assets_List.xml"); > > IParser parser = new UcfAssetsListParser(); > > UCFAssetsList ucfa = (UCFAssetsList) parser.parse(fi); > > > Injector injector = Guice.createInjector(new UcfMybatisModule()); > > TempAsset1 t1 = injector.getInstance(TempAsset1.class); > > t1.load(ucfa); > > } > > > public void load(final UCFAssetsList ucfAssetsList) throws AppException, > > SQLException { > > AppLog.info(CLASS_ID, "load"); > > ... > > } > > } > > > POM file > > <repositories> > > <repository> > > <id>guice-maven</id> > > <name>guice maven</name> > > <url>http://guice-maven.googlecode.com/svn/trunk</url> > > </repository> > > </repositories> > > <dependencies> > > <dependency> > > <groupId>ms-itgrc</groupId> > > <artifactId>ms-itgrc-core</artifactId> > > <version>6.0.1.0.0</version> > > </dependency> > > <dependency> > > <groupId>org.apache.commons</groupId> > > <artifactId>commons-io</artifactId> > > <version>1.3.2</version> > > </dependency> > > <dependency> > > <groupId>org.mybatis</groupId> > > <artifactId>mybatis</artifactId> > > <version>3.0.6</version> > > </dependency> > > <dependency> > > <groupId>org.mybatis</groupId> > > <artifactId>mybatis-guice</artifactId> > > <version>3.0</version> > > </dependency> > > <dependency> > > <groupId>com.google.code.guice</groupId> > > <artifactId>guice</artifactId> > > <version>2.0.1</version> > > </dependency> > > <dependency> > > <groupId>org.mybatis</groupId> > > <artifactId>mybatis-guice</artifactId> > > <version>3.0</version> > > </dependency> > > </dependencies> > > > Please let me know where did i go wrong? > > > Thanks, > > GP |
| Powered by Nabble | Edit this page |
