当前位置: 首页 > 面试题库 >

如何将模块声明注入JAR?

谢俊悟
2023-03-14
问题内容

假设我有lib.jar一个我没有源代码的库(或者它是用某种尚未意识到模块的非Java语言编写的)。lib.jar没有module- info.class,我不想将其用作自动模块,所以我想注入module-info.class它。

我首先module-info.java使用以下命令生成:

jdeps --generate-module-info . lib.jar

假设这生成了这样的内容:

module lib {
    exports package1;
    exports package2;
}

然后,我尝试编译它,但是javac由于软件包package1package2不存在而失败:

> javac module-info.java
module-info.java:4: error: package is empty or does not exist: package1

当然,我可以创建目录package1package2在其中创建虚拟类,但是有更好的方法吗?


问题答案:

是的,使用该--patch-module选件是可能的。此选项最常在运行时使用,但在编译时也可以使用:

javac --patch-module <module name>=<path to jar> module-info.java


 类似资料:
  • 假设我有一个库,它没有源代码(或者它是用某种不知道模块的非Java语言编写的)。没有并且我不想将它用作自动模块,因此我想将注入到它中。 我首先使用以下命令生成: 当然,我可以创建目录和,其中包含虚拟类,但是否有更好的方法?

  • 我正在创建一个环境模块来补充缺失的打字。我可以创建打字。d、 ts这为环境模块提供了正确的类型。 由于某种原因,当我这样做时,环境模块的import语句中断。 typings.d.ts 在上面的例子中,我想从另一个库中提供适当的返回类型。

  • use 声明可以将一个完整的路径绑定到一个新的名字,从而更容易访问。 // 将 `deeply::nested::function` 路径绑定到 `other_function`。 use deeply::nested::function as other_function; fn function() { println!("called `function()`"); } mod de

  • 问题内容: 我的Jenkins 2.19.4使用管道:声明式代理程序API 1.0.1。如果您无法定义变量来分配读取的属性,那么如何使用readProperties? 例如,要捕获SVN版本号,我目前以脚本样式使用以下代码捕获它: 然后我可以使用: 由于以声明式定义svnProp是不合法的,因此如何使用readProperties? 问题答案: 您可以使用标记内的步骤来运行任意管道代码。 所以符合

  • < code >转换器希望使用由< code>ConfigProducer生成的注入< code >配置。其中< code>ConfigProducer在WAR中,但< code > converter 和< code>Config在jar中。遗憾的是,似乎没有注入< code>config导致< code > javax . EJB . EJB exception:javax . persist

  • 问题内容: 我没有在单个页面应用程序上使用angular,但是由于加载顺序问题,我想一次定义主应用程序模块。同时,我想在每页的基础上注入/请求模块,而不要一概而论,因为并非所有JS文件都会在每页上加载。 我可以定义没有必需模块的应用程序吗: app = angular.module(“ app”,[]) 并将它们从控制器注入还是在以后注入? 问题答案: 不,目前尚无官方支持。引导AngularJS