Mybatis:逆向工程配合生成報Cannot instantiate object of type tk.mybatis.mapper.generator.

打個廣告,幫朋友賣點東西,東西超便宜的喲【衣服鞋子等】,廠家直接出貨,絕對低於市場價!!! 一般都比市場價便宜3—7折【都是牌子貨】,如果您感興趣,可以掃描屏幕下方的二維碼,感謝關注!!!

微信

使用 tk.mybatis 準備生成繼承通用Mapper的Dao、Entity和Mapper文件時,

運行mybatis-generator報瞭如下錯誤:

[ERROR] Failed to execute goal org.mybatis.generator:mybatis-generator-maven-plugin:1.3.5:generate (default-cli) on project base: Execution default-cli of goal org.mybatis.generator:mybatis-generator-maven-plugin:1.3.5:generate failed: Cannot instantiate object of type tk.mybatis.mapper.generator.MapperPlugin -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.mybatis.generator:mybatis-generator-maven-plugin:1.3.5:generate (default-cli) on project base: Execution default-cli of goal org.mybatis.generator:mybatis-generator-maven-plugin:1.3.5:generate failed: Cannot instantiate object of type tk.mybatis.mapper.generator.MapperPlugin
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:212)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:307)
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:193)
    at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:106)
    at org.apache.maven.cli.MavenCli.execute(MavenCli.java:863)
    at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:288)
    at org.apache.maven.cli.MavenCli.main(MavenCli.java:199)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
    at org.codehaus.classworlds.Launcher.main(Launcher.java:47)
Caused by: org.apache.maven.plugin.PluginExecutionException: Execution default-cli of goal org.mybatis.generator:mybatis-generator-maven-plugin:1.3.5:generate failed: Cannot instantiate object of type tk.mybatis.mapper.generator.MapperPlugin
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:145)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:207)
    ... 21 more
Caused by: java.lang.RuntimeException: Cannot instantiate object of type tk.mybatis.mapper.generator.MapperPlugin
    at org.mybatis.generator.internal.ObjectFactory.createInternalObject(ObjectFactory.java:229)
    at org.mybatis.generator.internal.ObjectFactory.createPlugin(ObjectFactory.java:284)
    at org.mybatis.generator.config.Context.generateFiles(Context.java:704)
    at org.mybatis.generator.api.MyBatisGenerator.generate(MyBatisGenerator.java:269)
    at org.mybatis.generator.api.MyBatisGenerator.generate(MyBatisGenerator.java:189)
    at org.mybatis.generator.maven.MyBatisGeneratorMojo.execute(MyBatisGeneratorMojo.java:199)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134)
    ... 22 more
Caused by: java.lang.ClassNotFoundException: tk.mybatis.mapper.generator.MapperPlugin
    at org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy.loadClass(SelfFirstStrategy.java:50)
    at org.codehaus.plexus.classworlds.realm.ClassRealm.unsynchronizedLoadClass(ClassRealm.java:271)
    at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:247)
    at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:239)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:348)
    at org.mybatis.generator.internal.ObjectFactory.internalClassForName(ObjectFactory.java:181)
    at org.mybatis.generator.internal.ObjectFactory.createInternalObject(ObjectFactory.java:225)
    ... 28 more
[ERROR] 
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/PluginExecutionException

可以看到主要報錯信息如下:

1、org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.mybatis.generator:mybatis-generator-maven-plugin:1.3.5:generate (default-cli) on project base: Execution default-cli of goal org.mybatis.generator:mybatis-generator-maven-plugin:1.3.5:generate failed: Cannot instantiate object of type tk.mybatis.mapper.generator.MapperPlugin;
2、org.apache.maven.plugin.PluginExecutionException: Execution default-cli of goal org.mybatis.generator:mybatis-generator-maven-plugin:1.3.5:generate failed: Cannot instantiate object of type tk.mybatis.mapper.generator.MapperPlugin;
3、java.lang.RuntimeException: Cannot instantiate object of type tk.mybatis.mapper.generator.MapperPlugin;
4、java.lang.ClassNotFoundException: tk.mybatis.mapper.generator.MapperPlugin。

經度娘一波,發現網上提供的解決辦法有以下幾種:

1、把mybatis-generator.xml配置文件中的 javaClientGenerator標籤裏的type賦值"XMLMAPPER"或"ANNOTATEDMAPPER",仔細檢查後這條排除;

2、更新org.mybatis.mapper.generator.MapperPlugin這個插件的版本,但把 tk.mybatis:mapper從v3.3.6升級到v3.4.6後問題依舊存在,這條排除;

後來發現報錯信息裏出現"ClassNotFoundException",在思考會不會是maven導入的包mybatis-generator沒有找到,所以嘗試調換依賴的位置:

調換前-->

<plugin>
          <groupId>org.mybatis.generator</groupId>
          <artifactId>mybatis-generator-maven-plugin</artifactId>
          <version>1.3.5</version>
          <configuration>
            <verbose>true</verbose>
            <overwrite>true</overwrite>
            <configurationFile>src/main/resources/mybatis/generator-config.xml</configurationFile>
          </configuration>
</plugin>

調換後-->

<plugin>
          <groupId>org.mybatis.generator</groupId>
          <artifactId>mybatis-generator-maven-plugin</artifactId>
          <version>1.3.5</version>
          <configuration>
            <verbose>true</verbose>
            <overwrite>true</overwrite>
            <configurationFile>src/main/resources/mybatis/generator-config.xml</configurationFile>
          </configuration>
          <dependencies>
            <!--MyBatis Generator及工具-->
            <dependency>
              <groupId>org.mybatis.generator</groupId>
              <artifactId>mybatis-generator-core</artifactId>
              <version>1.3.5</version>
            </dependency>
            <dependency>
              <groupId>tk.mybatis</groupId>
              <artifactId>mapper</artifactId>
              <version>3.4.6</version>
            </dependency>
          </dependencies>
</plugin>

結果再次運行mybatis-generator成功生成文件,就是插件在之前引入的位置運行時找不到,把依賴位置改到插件中

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章