2

私は Arquillian と Maven をまったく初めて使用し、今週両方を使い始めたばかりなので、単純な質問で申し訳ありません。言うまでもなく、私はロープを学ぶために実際の時間を費やしました。私の最新のトリックとして、標準の EJB セッション Bean をセットアップしようとしています。私の知識のほとんどは、Arquillian 入門ガイドから得たものです。

http://arquillian.org/guides/getting_started/
http://arquillian.org/guides/getting_started_rinse_and_repeat/
http://docs.jboss.org/arquillian/reference/1.0.0.Alpha1/en-US/html_single/ #d0e395

エラーを表示するには、Eclipse でモデル プロジェクトを右クリックし、[Run As] -> [Run On Server] を選択します。次のエラーが表示されます。

Caused by: java.lang.ClassNotFoundException: org.jboss.shrinkwrap.api.asset.Asset from [Module "deployment.Model.jar:main" from Service Module Loader]
at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:196) [jboss-modules.jar:1.2.0.Final-redhat-1]
at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:444) [jboss-modules.jar:1.2.0.Final-redhat-1]
at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:432) [jboss-modules.jar:1.2.0.Final-redhat-1]
at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:399) [jboss-modules.jar:1.2.0.Final-redhat-1]
at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:374) [jboss-modules.jar:1.2.0.Final-redhat-1]
at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:119) [jboss-modules.jar:1.2.0.Final-redhat-1]
... 29 more

完全なサーバーログは次のとおりです。

http://www.williverstravels.com/JDev/Forums/StackOverflow/arquillianEJB/log.txt

これが私のテストクラスです

 package model.session;

 import static org.junit.Assert.*;

 import javax.ejb.EJB;

 import model.entity.Project;

 import org.jboss.arquillian.container.test.api.Deployment;
 import org.jboss.arquillian.junit.Arquillian;
 import org.jboss.shrinkwrap.api.ShrinkWrap;
 import org.jboss.shrinkwrap.api.asset.EmptyAsset;
 import org.jboss.shrinkwrap.api.spec.JavaArchive;
 import org.junit.Test;
 import org.junit.runner.RunWith;

 @RunWith(Arquillian.class)
 public class SessionTest {

     @EJB
     private MyManagerLocal service;

     @Deployment
     public static JavaArchive createTestableDeployment() {
         final JavaArchive jar = ShrinkWrap.create(JavaArchive.class, "example.jar")
                 .addClasses(MyManagerLocal.class, MyManager.class)
                 .addAsManifestResource(EmptyAsset.INSTANCE, "beans.xml");
         return jar;
     }

     @Test
     public void assertEqualsProject() {
         Project project = (Project)service.getEntityByPrimaryKey(Project.class, 1L);
         assertEquals(project.getProjectId().longValue(), 1L);
     }
 }

ここに私のpom.xmlがあります

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
    http://maven.apache.org/POM/4.0.0
    http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>Model</groupId>
<artifactId>Model</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.jboss.arquillian</groupId>
            <artifactId>arquillian-bom</artifactId>
            <version>1.1.1.Final</version>
            <scope>import</scope>
            <type>pom</type>
        </dependency>
    </dependencies>
</dependencyManagement>
<build>
    <plugins>
        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.3.2</version>
            <configuration>
                <source>1.6</source>
                <target>1.6</target>
            </configuration>
        </plugin>
        <plugin>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.12</version>
        </plugin>
    </plugins>
</build>
<dependencies>
    <dependency>
        <groupId>org.jboss.arquillian.junit</groupId>
        <artifactId>arquillian-junit-container</artifactId>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.8.1</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.jboss.spec</groupId>
        <artifactId>jboss-javaee-6.0</artifactId>
        <version>1.0.0.Final</version>
        <type>pom</type>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>commons-lang</groupId>
        <artifactId>commons-lang</artifactId>
        <version>2.3</version>
    </dependency>
    <dependency>
        <groupId>org.eclipse.persistence</groupId>
        <artifactId>eclipselink</artifactId>
        <version>2.5.1-RC1</version>
        <scope>provided</scope>
    </dependency>
</dependencies>
<profiles>
    <profile>
        <id>jboss-embedded</id>
        <dependencies>
            <dependency>
                <groupId>org.jboss.arquillian.container</groupId>
                <artifactId>arquillian-weld-ee-embedded-1.1</artifactId>
                <version>1.0.0.CR3</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.jboss.weld</groupId>
                <artifactId>weld-core</artifactId>
                <version>1.1.5.Final</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-simple</artifactId>
                <version>1.6.4</version>
                <scope>test</scope>
            </dependency>
        </dependencies>
    </profile>
    <profile>
        <id>arquillian-jbossas-managed</id>
        <dependencies>
            <dependency>
                <groupId>org.jboss.as</groupId>
                <artifactId>jboss-as-arquillian-container-managed</artifactId>
                <version>7.1.1.Final</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.jboss.arquillian.protocol</groupId>
                <artifactId>arquillian-protocol-servlet</artifactId>
                <scope>test</scope>
            </dependency>
        </dependencies>
    </profile>
</profiles>

arquillian.xml ファイルもあります

<arquillian xmlns="http://jboss.org/schema/arquillian"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
    http://jboss.org/schema/arquillian
    http://jboss.org/schema/arquillian/arquillian_1_0.xsd">
<defaultProtocol type="Servlet 3.0"></defaultProtocol>
<container qualifier="arquillian-jbossas-managed" default="true">
    <configuration>
        <property name="jbossHome">C:\Dev\eap</property>
        <property name="allowConnectingToRunningServer">true</property>
    </configuration>
</container>

JBoss AS 7.2 / EAP 6.1 で作業した結果、いくつかの jar が欠落しているように見えますが、Maven の pom.xml がこれを処理してくれると思っていました。どんな助けでも大歓迎です。現時点では少し迷っています。

**更新**すべてのarquillianスコープをランタイムに変更するか、タグを完全に削除するなど、他のいくつかのpom.xml構成を試しました。それでも同じエラーが発生します。私はまた、効果がないために以下を追加しようとしました:

<dependency>
    <groupId>org.jboss.shrinkwrap.resolver</groupId>
    <artifactId>shrinkwrap-resolver-bom</artifactId>
    <version>2.1.0-alpha-1</version>
    <scope>runtime</scope>
    <type>pom</type>
</dependency>

** アップデート **

私が言えることから、問題は私の pom.xml の jar 行にあります。ライブラリが必要ですが、jar にパッケージ化されていません。それで、テストを機能させる方法について、振り出しに戻ります。それらを別のプロジェクトにパッケージ化する必要がありますか? 私のテストはテストされているModel.jarを「見る」ことができないので、それを実行するとエラーが発生します。これは悪化のキャッチ 22 に変わりつつあります。

4

0 に答える 0