Hi Mandy,

I am a bit surprised that the verbose option doesn't seem
to have any effect on the output of jdeps -I

I have built 4 jars:

unsafe.jar has some class that depend directly on
           sun.misc.Unsafe, and some that don't.
indirect.jar has some classes that depends indirectly
           on sun.misc.Unsafe: they depend on classes
           from unsafe.jar that depend on sun.misc.Unsafe.
           It also has classes that don't depend on sun.misc.Unsafe,
           either directly or indirectly.
indirect2.jar also has some classes that depends indirectly
           on sun.misc.Unsafe: they depend on classes
           from unsafe.jar that depend on sun.misc.Unsafe.
           It also has classes that don't depend on sun.misc.Unsafe,
           either directly or indirectly.
safe.jar has classes that depends on other classes in
         unsafe.jar, indirect.jar, and indirect2.jar
         However the classes it depends on do not depend on
         sun.misc.Unsafe, either directly or indirectly.

If I run:
$ ./bin/jdeps -I -e sun.misc.Usafe -modulepath ~/test/JdepsTest/dist -addmods unsafe,safe,indirect,indirect2

Inverse transitive dependences matching sun.misc.Usafe
indirect <- safe
indirect2 <- safe
unsafe <- indirect <- safe
unsafe <- indirect2 <- safe
unsafe <- safe

So it looks like the granurality of the analysis is performed
at module level. Is there anyway to make the analysis at class
level, so that 'safe' isn't reported to depend on sun.misc.Unsafe?

I tried passing -verbose:class or -v but it doesn't appear to have any
effect, the result is always the same.

best regards,

-- daniel

On 12/05/16 18:45, Mandy Chung wrote:
This patch applies on the top of the jdeps refresh patch [1]..

Webrev at:
  http://cr.openjdk.java.net/~mchung/jdk9/webrevs/8156575/webrev.01/

The -addmods option is the same as what the runtime supports so that we
can run jdeps in the same command-line options as runtime.  -system is
to specify an alternative java.home.

-inverse option will find the modules that depend on a given root module
directly and indirectly.  It’s useful to use with the -requires option
or -package, -regex options:

Example output:
$ jdeps -I -mp mods -addmods m4,m5 -requires java.logging
java.sql
 [jrt:/java.sql]
   requires mandated java.base
   requires public java.logging
   requires public java.xml
java.sql -> java.logging
   java.sql                                           ->
java.util.logging                                  java.logging
   javax.sql                                          ->
java.util.logging                                  java.logging
m5
 [file:///scratch/mchung/ws/jdk9/jdk9-jdeps/JTwork/scratch/mods/m5/]
   requires mandated java.base
   requires public java.compiler
   requires public java.logging
   requires java.sql
   requires public m4
m5 -> java.logging
   p5                                                 ->
java.util.logging                                  java.logging

Inverse transitive dependences on [java.logging]
java.logging <- java.sql <- m5
java.logging <- m4 <- m5
java.logging <- m5

$ jdeps -I -mp mods -requires jdk.unsupported -m java.se <http://java.se>
java.desktop
 [jrt:/java.desktop]
   requires mandated java.base
   requires public java.datatransfer
   requires java.prefs
   requires public java.xml
   requires jdk.unsupported
java.desktop -> jdk.unsupported
   sun.awt                                            -> sun.misc
                                    jdk.unsupported (internal)
   sun.awt.image                                      -> sun.misc
                                    jdk.unsupported (internal)

Inverse transitive dependences on [jdk.unsupported]
jdk.unsupported <- java.desktop <- java.se <http://java.se>


[1] http://cr.openjdk.java.net/~mchung/jdk9/webrevs/8156680/webrev.01/


Reply via email to