1

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>

次に、データベース内のテーブルに対応する 2 つの試行モデルを作成しました: Client(to table clients) とSiteUrl(to table 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

しかし、モデルがインストルメント化されているかどうかを尋ねる同じエラーが引き続き表示されます。しかし、計装出力は問題ないようです。

4

1 に答える 1

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 を使用できます。

これを 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>
于 2014-11-09T01:32:25.087 に答える