关于intellij的Java 9迁移问题与模块系统有关

问题描述 投票:2回答:1

我尝试迁移我当前的项目,以便能够在java 9上编译和运行它。我首先尝试将基于java8的项目移动到java9而不需要太多努力,这意味着基本上不会转向拼图。

项目结构就像

myjava-service [myjava-service-parent] parent-pom with the following modules
 - myjava-service 
 - myjava-service-common
 - myjava-service-test

它与mvn clean包完美编译,并在执行fat.jar时运行

当我尝试使用intellij运行它时,噩梦开始,在intellij上运行我必须设置我想要执行的模块,这是myjava-service但是显然intellij将它理解为java 9模块以及很多拆分包问题,找不到的类和我正在努力修复的其他问题,所以我的问题是有没有办法在java 9环境下运行intellij上的服务,而不会以某种方式触发新的java模块系统?

对于记录问题,如

java.lang.module.ResolutionException: Modules javax.annotation.api and annotations export package javax.annotation to module javax.el

java intellij-idea java-9
1个回答
0
投票

所以,显然有人遇到了我所面临的同一个问题,所以当你的服务从一个不属于你的资源的类开始时(在我的情况下,我的服务是由Vertx jar中的Starter类启动的)然后会发生什么IDEA最终使用模块路径而不是类路径。幸运的是,Intellij团队非常乐于助人,跟进了门票

https://youtrack.jetbrains.com/issue/IDEA-187390,对于下一个版本,当源中没有module-info文件时,IDEA将禁止使用模块路径。

另外对于那些急需在java 9中运行服务的人来说,有一个工作就是创建一个Main类并在启动你的服务的类中调用它,在我的Case中它看起来像

public class Start {

    public static void main(String[] args) {
        Starter.main(args);
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.