Hi Alan,

Thanks, the -addmods hint is a very useful one, I had not tried that yet. After 
adding the jackson.core and jackson.annotations explicitly to -addmods, I can 
compile/run without depending on them in my demonstrator module. That's a good 
workaround.

Paul




> On 22 Apr 2016, at 13:16, Alan Bateman <alan.bate...@oracle.com> wrote:
> 
> On 22/04/2016 09:52, Paul Bakker wrote:
>> Why don't automatic modules take better care of transitive dependencies, so 
>> that the application's module-info looks similar to what it would after 
>> transforming the dependencies to named modules?
>> 
>> 
> As RĂ©mi said, there isn't any static analysis done at compile time or run 
> time to figure out the dependences. It would be costly to do this and of 
> course no guarantee that it would be accurate/complete.
> 
> For that reason, automatic modules are specified to only require java.base 
> and you can confirm this if you use -listmods to list/describe these modules:
> 
> java -mp lib -listmods:jackson.core,jackson.databind,jackson.annotations
> 
> So in your scenario then "demonstrator" requires jackson.databind but there 
> is nobody that transitively depends on jackson.core or jackson.annotations 
> and so neither module is resolved. You can of course use -addmods if you need 
> it.
> 
> I guess it's worth repeating that automatic modules are for migration and 
> bridging to the class path. In the scenario then you'd like to create a 
> module "demonstrator" that depends on Jackson databind but that project 
> hasn't embraced modules yet. You move jackson-databind-2.6.jar to the module 
> path where it becomes a module with a name ("jackson.databind" in this case) 
> and that allows you to make progress on compiling and deploying 
> "demonstrator" as a module. At this point then you can leave the other JAR 
> files on the class path and the code in jackson.databind will link to 
> whatever types it needs from the other Jackson components.
> 
> -Alan.
> 

Reply via email to