首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法使用Java 11通过jdeps为遗留jar生成模块信息

无法使用Java 11通过jdeps为遗留jar生成模块信息
EN

Stack Overflow用户
提问于 2019-08-14 22:43:39
回答 1查看 1.2K关注 0票数 1

我需要为遗留jar生成模块-info文件,该文件名为:Selenie-chro-Driver-3.141.59.jar,命令如下:

代码语言:javascript
复制
jdeps --module-path modules --generate-module-info out selenium-chrome-driver-3.141.59.jar

但结果是:

代码语言:javascript
复制
Missing dependence: C:\...\selenium.chrome.driver\module-info.java not generated
Error: missing dependencies
   org.openqa.selenium.chrome.ChromeDriver            -> com.google.common.collect.ImmutableMap             not found
   org.openqa.selenium.chrome.ChromeDriver            -> org.openqa.selenium.Capabilities                   not found
   org.openqa.selenium.chrome.ChromeDriver            -> org.openqa.selenium.WebDriverException             not found
   org.openqa.selenium.chrome.ChromeDriver            -> org.openqa.selenium.html5.LocalStorage             not found
   org.openqa.selenium.chrome.ChromeDriver            -> org.openqa.selenium.html5.Location                 not found
   org.openqa.selenium.chrome.ChromeDriver            -> org.openqa.selenium.html5.LocationContext          not found
   org.openqa.selenium.chrome.ChromeDriver            -> org.openqa.selenium.html5.SessionStorage           not found
   org.openqa.selenium.chrome.ChromeDriver            -> org.openqa.selenium.html5.WebStorage               not found
   org.openqa.selenium.chrome.ChromeDriver            -> org.openqa.selenium.interactions.HasTouchScreen    not found
...

我试过了这里这里

代码语言:javascript
复制
jdeps --module-path modules --add-modules=ALL-MODULE-PATH --generate-module-info out selenium-chrome-driver-3.141.59.jar

那我也会犯同样的错误。

作为替代方式,我尝试添加单独的模块,如:

代码语言:javascript
复制
jdeps --module-path modules --add-modules  org.openqa.selenium.chrome,org.openqa.selenium.remote --generate-module-info out selenium-chrome-driver-3.141.59.jar

我看到这个:

代码语言:javascript
复制
Exception in thread "main" java.lang.module.FindException: Module org.openqa.selenium.chrome not found
        at java.base/java.lang.module.Resolver.findFail(Resolver.java:877)
        at java.base/java.lang.module.Resolver.resolve(Resolver.java:128)
        at java.base/java.lang.module.Configuration.resolve(Configuration.java:411)
        at java.base/java.lang.module.Configuration.resolve(Configuration.java:245)
        at jdk.jdeps/com.sun.tools.jdeps.JdepsConfiguration.<init>(JdepsConfiguration.java:117)
        at jdk.jdeps/com.sun.tools.jdeps.JdepsConfiguration$Builder.build(JdepsConfiguration.java:563)
        at jdk.jdeps/com.sun.tools.jdeps.JdepsTask.buildConfig(JdepsTask.java:589)
        at jdk.jdeps/com.sun.tools.jdeps.JdepsTask.run(JdepsTask.java:543)
        at jdk.jdeps/com.sun.tools.jdeps.JdepsTask.run(JdepsTask.java:519)
        at jdk.jdeps/com.sun.tools.jdeps.Main.main(Main.java:49)

不管我要添加哪个模块,问题都是:

代码语言:javascript
复制
java.lang.module.FindException name_of_your_module

使用一个更高的级别对我也没有帮助:

代码语言:javascript
复制
jdeps --module-path modules --add-modules  org.openqa.selenium --generate-module-info out selenium-chrome-driver-3.141.59.jar

错误将是:

代码语言:javascript
复制
Exception in thread "main" java.lang.module.FindException: Module org.openqa.selenium not found
        at java.base/java.lang.module.Resolver.findFail(Resolver.java:877)
        at java.base/java.lang.module.Resolver.resolve(Resolver.java:128)
        at java.base/java.lang.module.Configuration.resolve(Configuration.java:411)

所以,我最后能做的就是手动创建模块信息,并使用exports在每个模块中编写?

更新:

代码语言:javascript
复制
jdeps -cp guava-25.0-jre.jar;selenium-api-3.141.59.jar;selenium-remote-driver-3.141.59.jar selenium-chrome-driver-3.141.59.jar

要通过-cp选项查找类:

代码语言:javascript
复制
selenium-chrome-driver-3.141.59.jar -> guava-25.0-jre.jar
selenium-chrome-driver-3.141.59.jar -> java.base
selenium-chrome-driver-3.141.59.jar -> selenium-api-3.141.59.jar
selenium-chrome-driver-3.141.59.jar -> selenium-remote-driver-3.141.59.jar

我加入了selenium-chrome-driver-3.141.59.jarselenium-api-3.141.59.jar也加入了guava-25.0-jre.jarselenium-remote-driver-3.141.59.jar

EN

回答 1

Stack Overflow用户

发布于 2019-08-15 01:40:54

文件selenium-chrome-driver-3.141.59.jar而不是,是一个模块化的JAR,因为它不包含任何像module-info.class文件一样的模块信息。

对我来说,当我使用jdeps选项并添加依赖的JARS时,-cp起了作用,如下所示.

代码语言:javascript
复制
jdeps -cp guava-25.0-jre.jar;selenium-api-3.141.59.jar;selenium-remote-driver-3.141.59.jar selenium-chrome-driver-3.141.59.jar

我得到了这个输出。

代码语言:javascript
复制
selenium-chrome-driver-3.141.59.jar -> guava-25.0-jre.jar
selenium-chrome-driver-3.141.59.jar -> java.base
selenium-chrome-driver-3.141.59.jar -> selenium-api-3.141.59.jar
selenium-chrome-driver-3.141.59.jar -> selenium-remote-driver-3.141.59.jar
   org.openqa.selenium.chrome                         -> com.google.common.base                             guava-25.0-jre.jar
   org.openqa.selenium.chrome                         -> com.google.common.collect                          guava-25.0-jre.jar
   org.openqa.selenium.chrome                         -> com.google.common.io                               guava-25.0-jre.jar
   org.openqa.selenium.chrome                         -> java.io                                            java.base
   org.openqa.selenium.chrome                         -> java.lang                                          java.base
   org.openqa.selenium.chrome                         -> java.lang.invoke                                   java.base
   org.openqa.selenium.chrome                         -> java.util                                          java.base
   org.openqa.selenium.chrome                         -> java.util.function                                 java.base
   org.openqa.selenium.chrome                         -> java.util.stream                                   java.base
   org.openqa.selenium.chrome                         -> org.openqa.selenium                                selenium-api-3.141.59.jar
   org.openqa.selenium.chrome                         -> org.openqa.selenium.html5                          selenium-api-3.141.59.jar
   org.openqa.selenium.chrome                         -> org.openqa.selenium.interactions                   selenium-api-3.141.59.jar
   org.openqa.selenium.chrome                         -> org.openqa.selenium.mobile                         selenium-api-3.141.59.jar
   org.openqa.selenium.chrome                         -> org.openqa.selenium.remote                         selenium-remote-driver-3.141.59.jar
   org.openqa.selenium.chrome                         -> org.openqa.selenium.remote.html5                   selenium-remote-driver-3.141.59.jar
   org.openqa.selenium.chrome                         -> org.openqa.selenium.remote.http                    selenium-remote-driver-3.141.59.jar
   org.openqa.selenium.chrome                         -> org.openqa.selenium.remote.mobile                  selenium-remote-driver-3.141.59.jar
   org.openqa.selenium.chrome                         -> org.openqa.selenium.remote.service                 selenium-remote-driver-3.141.59.jar
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57502944

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档