intellij上的vertx-hk2和vertx-jersey拆分包问题

时间:2018-04-24 16:47:11

标签: java intellij-idea java-9 vert.x hk2

我一直在尝试将服务迁移到java 9,尽管我可以编译并运行fat.jar,但我无法在Intellij上运行它,原因是库vertx-的拆分包问题 - hk2和vertx.jersey,因为两个库都有完全相同的包 com.englishtown.vertx.hk2

我试图解决这个问题,例如(补丁模块,排除),但似乎没有任何工作,我不能排除其中一个,因为这两者对于服务运行至关重要。

当intellij尝试执行服务时会发生这种情况

Error occurred during initialization of boot layer
java.lang.module.ResolutionException: Modules vertx.jersey and vertx.hk2 export package com.englishtown.vertx.hk2 to module kryo.serializers

Process finished with exit code 1

原因很清楚

所以我想问一些人有这方面的帮助,你是怎么设法让它运行的?

P.S:我的问题是项目所有者https://github.com/ef-labs/vertx-hk2/issues/8

1 个答案:

答案 0 :(得分:2)

我找到了克服这个问题的方法,我基本上把两个装有相同包装的罐子加盖成一个,pom看起来很简单,就像

<build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
                <version>3.1.1</version>
                <configuration>
                    <!-- put your configurations here -->
                </configuration>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>shade</goal>
                        </goals>
                        <configuration>
                            <artifactSet>
                                <includes>
                                    <include>com.englishtown.vertx:vertx-hk2</include>
                                    <include>com.englishtown.vertx:vertx-jersey</include>
                                </includes>
                            </artifactSet>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

没有理想的解决方案,但它有效,阴影jar合并了两个库可以在同一模块中共存的包。