2014-11-08 231 views
1

我试图在Intellij IDEA中设置ActiveJDBC工具,但尽管我执行了指令中的所有步骤,但无法使其工作。无法为Intellij IDEA中的ActiveJDBC设置检测工具社区

在我pom.xml我启用插件:与在我的数据库表对应

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.javalite</groupId> 
      <artifactId>activejdbc-instrumentation</artifactId> 
      <version>1.4.9</version> 
      <executions> 
       <execution> 
        <phase>process-classes</phase> 
        <goals> 
         <goal>instrument</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 
    </plugins> 
</build> 

然后,我创建了两个试用机型:Client(表clients)和SiteUrl(表site_urls)。

我还在JUnit的默认配置中启用了检测作为Maven目标。事实上,它似乎它运行良好:

**************************** START INSTRUMENTATION **************************** 
Directory: /home/k-/Idea Projects/project/project/target/classes 
**************************** END INSTRUMENTATION **************************** 
**************************** START INSTRUMENTATION **************************** 
Directory: /home/k-/Idea Projects/project/project/target/test-classes 
Found model: package.persistance.Client 
Found model: package.persistance.SiteUrl 
Instrumented class: package.persistance.Client in directory: /home/k-/Idea%20Projects/project/project/target/classes/ 
Instrumented class: package.persistance.SiteUrl in directory: /home/k-/Idea%20Projects/project/project/target/test-classes/ 
**************************** END INSTRUMENTATION **************************** 

但是,当我尝试执行下面的代码,我得到错误:

public class FirstTests 
{ 
    @Test 
    public void saveTest() { 
     Base.open("com.mysql.jdbc.Driver", "jdbc:mysql://127.0.0.1/test_db", "root", ""); 
     Assert.assertTrue(Base.hasConnection()); 

     Client c = new Client(); 
     c.set("name", "client 1"); 
     c.saveIt(); 
    } 
} 

的错误是:

org.javalite.activejdbc.DBException: failed to determine Model class name, are you sure models have been instrumented? 

我可以”弄清楚什么可能是错的,我该如何解决它?

编辑 尝试从命令行构建项目。我不知道如果我这样做是正确的,这是我用过的命令:

mvn clean compile org.javalite:activejdbc-instrumentation:1.4.9:instrument assembly:single 

但我仍然得到同样的错误,询问是否车型已仪表。但仪表输出似乎没问题。

+0

因此,仪表工作在命令行或通过您的构建脚本(Maven,Ant,Gradle等),对吧? – Makoto 2014-11-08 23:38:45

+0

我想它通过构建脚本工作。这就是我在IDEA的“输出”窗口中获得的内容,之后它将运行实际的代码,然后这就是错误的来源。我会用图片更新这个问题。 – moskalak 2014-11-08 23:39:23

+0

因此,不要从IntelliJ内运行Maven目标,而是尝试在命令行上运行它,看看是否有效。如果确实如此,那么我们可以将它隔离为一个特定于IntelliJ的问题。 – Makoto 2014-11-08 23:46:24

回答

2

的问题是关系到其名称中的空格目录:

home/k-/Idea Projects/project/project/target/classes 

此问题:https://github.com/javalite/activejdbc/issues/91已定于2014年2月7日,但并未使之成为最新版本。我们即将发布1.4.10版本,但目前您可以使用Sonatype存储库中的1.4.10-SNAPSHOT,该版本不存在此bug:

只需将此添加到您的pom并切换ActiveJDBC和Instrumentation插件的一个版本到快照:

<repositories> 
    <repository> 
     <id>snapshots1</id> 
     <name>Sonatype Snapshots</name> 
     <url>https://oss.sonatype.org/content/repositories/snapshots/</url> 
     <snapshots> 
      <enabled>true</enabled> 
      <updatePolicy>always</updatePolicy> 
      <checksumPolicy>warn</checksumPolicy> 
     </snapshots> 
    </repository> 
</repositories> 
<pluginRepositories> 
    <pluginRepository> 
     <id>snapshots2</id> 
     <name>Sonatype Snapshots</name> 
     <url>https://oss.sonatype.org/content/repositories/snapshots/</url> 
     <snapshots> 
      <enabled>true</enabled> 
      <updatePolicy>always</updatePolicy> 
      <checksumPolicy>warn</checksumPolicy> 
     </snapshots> 
    </pluginRepository> 
</pluginRepositories> 
+0

我不能够感谢你。同时,我感到很蠢。我看到'〜/ Idea%20Projects'目录,但它根本没有打扰我。 – moskalak 2014-11-09 01:51:02

+0

不觉得愚蠢,这是一个在框架中的错误:) – ipolevoy 2014-11-09 02:01:51

+0

是的,但是这可能会导致我错了什么可能是错的。尽管如此,我只是把我所有的项目都移到了“〜/ idea-projects” - 只是为了保持安全。 :) – moskalak 2014-11-09 02:09:45