java - 无法使用 Java 11 通过 jdeps 为遗留 jar 生成模块信息
问题描述
我需要使用以下命令为名为 selenium-chrome-driver-3.141.59.jar的遗留 jar 生成模块信息文件:
jdeps --module-path modules --generate-module-info out selenium-chrome-driver-3.141.59.jar
但我得到的结果是:
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
...
jdeps --module-path modules --add-modules=ALL-MODULE-PATH --generate-module-info out selenium-chrome-driver-3.141.59.jar
然后我得到同样的错误。
作为替代方法,我尝试添加单独的模块,例如:
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
我看到了这个:
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)
而且无论我要添加哪个模块,问题始终是:
java.lang.module.FindException name_of_your_module
使用更高的级别也对我没有帮助:
jdeps --module-path modules --add-modules org.openqa.selenium --generate-module-info out selenium-chrome-driver-3.141.59.jar
错误将是:
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
?
更新:
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选项查找类:
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.jar
,和.selenium-api-3.141.59.jar
guava-25.0-jre.jar
selenium-remote-driver-3.141.59.jar
解决方案
Fileselenium-chrome-driver-3.141.59.jar
不是模块化 JAR,因为它不包含任何像文件一样的模块信息。module-info.class
对我来说,jdeps
当我使用该-cp
选项并添加依赖的 JARS 时工作,就像这样......
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
我得到了这个输出......
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
推荐阅读
- python - 在服务器之间混合的全局变量,python 不和谐
- r - 如何使用经验 copula 计算概率?
- rust - 为什么 svd2rust 生成的一些寄存器函数使用 unsafe 而其他的却没有?
- arrays - 我有一个 18*9 的矩阵,我想计算每行 6 行的平均值并得到一个 3*9 的结果矩阵
- python-3.x - Dask gridsearch给出错误KeyError:'finalize-c53697b4-1572-4d19-af41-c76b531699b9'
- processing - 我希望用户在文本框中输入文本,我该怎么做?
- node.js - 尝试使用 Alexa 和 AWS SES 发送电子邮件。电子邮件将发送,但 Alexa 将返回并出现错误
- random-access - bzip2 是否允许在块或流级别进行随机访问解压缩?
- javascript - 如何测试使用来自外部 API 的复杂对象的函数?
- javascript - 使用 createMuiTheme 覆盖主题覆盖中的材质 UI 阴影数组值