0

Appクラス、コンテナ、デプロイメント、およびファサードを備えたwildfly swarmアプリケーションがあり、すべて正常に動作していますが、UserFacadesを別のパッケージに変更し、アプリケーションを実行するAppメインクラスから分離すると、デプロイメントが失敗します!

org.wildfly.swarm.Swarm をインポートします。

public class App {

    public static void main(String[] args) throws Exception {

        MyContainer.newContainer()
                .start()
                .deploy(MyDeployment.createDeployment());

    }


public class MyContainer {

    private static final String MYSQL_OPTIONS = "autoReconnect=true&useSSL=false&useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC";

    public static Container newContainer() throws Exception {
        Container container = new Container();

        container.fraction(new DatasourcesFraction()
                .jdbcDriver("mysql", (d) -> {
                    d.driverClassName("com.mysql.jdbc.Driver");
                    d.xaDatasourceClass("com.mysql.jdbc.jdbc2.optional.MysqlXADataSource");
                    d.driverModuleName("com.mysql");
                })
                .dataSource("MyDS", (ds) -> {
                    ds.driverName("mysql");
                    ds.connectionUrl("jdbc:mysql://localhost:3306/tfm?" + MYSQL_OPTIONS);
                    ds.userName("root");
                    ds.password("root");
                })
        );

        container.fraction(new MySQLJPAFraction()
                .inhibitDefaultDatasource()
                .defaultDatasource("jboss/datasources/MyDS")
        );

        return container;
    }

public class MyDeployment {

  public static JAXRSArchive createDeployment() throws Exception {
    JAXRSArchive deployment = ShrinkWrap.create(JAXRSArchive.class);

    deployment.addPackage(App.class.getPackage());
    deployment.addAsWebInfResource(
        new ClassLoaderAsset("META-INF/persistence.xml", App.class.getClassLoader()), "classes/META-INF/persistence.xml");
    deployment.addAsWebInfResource(
        new ClassLoaderAsset("META-INF/load.sql", App.class.getClassLoader()), "classes/META-INF/load.sql");

      return deployment;
  }
}


2016-10-19 01:12:17,308 ERROR [stderr] (main)     Caused by: java.lang.NoClassDefFoundError: Lcom/project/backend/facades/UserFacade;
2016-10-19 01:12:17,309 ERROR [stderr] (main)     Caused by: java.lang.ClassNotFoundException: com.project.backend.facades.UserFacade from [Module \"deployment.082daa7c-bb37-4a26-9740-29e7de1da93b.war:main\" from Service Module Loader]"}}

2016-10-19 01:12:17,309 ERROR [stderr] (main)   at org.wildfly.swarm.container.runtime.RuntimeDeployer.deploy(RuntimeDeployer.java:159)

2016-10-19 01:12:17,310 ERROR [stderr] (main)   at org.wildfly.swarm.container.Container.deploy(Container.java:432)

2016-10-19 01:12:17,310 ERROR [stderr] (main)   at org.wildfly.swarm.Swarm.deploy(Swarm.java:122)

2016-10-19 01:12:17,310 ERROR [stderr] (main)   at com.project.backend.App.main(App.java:15)

何が間違っていますか?すべてのパッケージをスキャンするようにメイン App クラスを設定するにはどうすればよいですか?

4

1 に答える 1

0

ああ、新しいパッケージを配置クラスに追加し損ねました :( deployment.addPackage("com.myproject.facades");

于 2016-10-18T21:36:36.813 に答える