首页 > 解决方案 > jdeps 命令不适用于 -p 属性

问题描述

当我执行这个命令时:

jdeps  --module-path out --module test

很好,它会打印所有信息。但是当我用 替换--module-path-p,它会引发异常:

jdeps -p out --module test
Exception in thread "main" java.lang.module.FindException: Module test not found

但是根据java我们可以替换--module-path-p

--module-path 到 -p

那么为什么会抛出异常呢?

标签: javamodulejava-11jdeps

解决方案


虽然选项对于多个不同的程序通常是一致的,但-p选项并非如此。Java的Oracle文档说:

--module-path modulepath... 或 -p modulepath
分号 (;) 分隔的目录列表,其中每个目录都是模块目录。

但是对于jdeps,它是:

-p pkg name、-package pkg name 或 --package pkg name
查找与指定包名称匹配的依赖项。您可以为不同的包多次指定此选项。

使用示例

此示例基于名为msg.service.app. 它只包含一个包msg.application

在不使用的情况下获取有关模块的信息-p

..snip..>jdeps --module-path target --module msg.service.app
msg.service.app
 [file:///C:/..snip../target/msg.service.app/]
   requires mandated java.base (@11.0.3)
   requires msg.service.api
msg.service.app -> java.base
msg.service.app -> msg.service.api
   msg.application            -> java.lang                  java.base
   msg.application            -> java.util                  java.base
   msg.application            -> msg.service                msg.service.api

..snip..>

获取有关依赖于包的信息msg.service

..snip..>jdeps --module-path target -p msg.service --module msg.service.app
msg.service.app
 [file:///C:/..snip../target/msg.service.app/]
   requires mandated java.base (@11.0.3)
   requires msg.service.api
msg.service.app -> msg.service.api
   msg.application            -> msg.service                msg.service.api

..snip..>

java.base用于找出依赖于包的内容的示例sun.util.spi

..snip..>jdeps --module java.base -p sun.util.spi
java.base
 [jrt:/java.base]
java.base -> java.base
   java.util                  -> sun.util.spi               java.base
   sun.util.locale.provider   -> sun.util.spi               java.base

..snip..>

推荐阅读