无法在Intellij IDEA社区中为ActiveJDBC设置工具

时间:2014-11-08 23:15:34

标签: java 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的默认配置Make之后启用了作为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

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

1 个答案:

答案 0 :(得分: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>