gradle Jigsaw module not found

前端 未结 1 419
无人共我
无人共我 2021-01-20 21:11

I try to run a very simple gradle project which uses java 9 modules, but i receive the following error.

/home/vadim/IdeaProjects/test_modules/src/main/java/mo         


        
相关标签:
1条回答
  • 2021-01-20 21:50

    Unfortunately, gradle does not treat every jar as a module (in simple words). If you want to find out how exactly is gradle building the module-path (as opposed to class-path), you probably want to start from here, specifically at the isModuleJar method. It's pretty easy to understand (though it took me almost two days to set-up gradle and debug the problem out) that the dependency that you are trying to use : gradle says that it is not a module (it isn't wrong, but I am not sure it is correct either). To make it very correct, gradle will add your dependency to the CLASSPATH, but in the very next line: it will not add your dependency to the module-path, because if fails the filter in isModuleJar.

    I do not know if this is a bug or not, or may be this is on purpose, but the solution is easy:

    plugins.withType(JavaPlugin).configureEach {
       java {
           modularity.inferModulePath = true
       }
    
       tasks.withType(JavaCompile) {
          doFirst {
              options.compilerArgs = [
                     '--module-path', classpath.asPath,
              ]
              classpath = files()
        }
    }
    

    you add it to the path, on purpose. I will flag this as a defect and let's see what they have to say.

    EDIT

    Even better, use a plugin that is written by a gradle commiter:

    plugins {
        id 'java'
        id 'de.jjohannes.extra-java-module-info' version "0.1"
    }
    

    And the easiest option on your case is to do :

    extraJavaModuleInfo {
         automaticModule("HdrHistogram-2.1.12.jar", "HdrHistogram")
    }
    
    0 讨论(0)
提交回复
热议问题