当前位置: 首页 > 知识库问答 >
问题:

如何将模块声明注入到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 module-info.java
module-info.java:4: error: package is empty or does not exist: package1

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

共有1个答案

邓才
2023-03-14

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

javac --patch-module <module name>=<path to jar> module-info.java
 类似资料:
  • 问题内容: 假设我有一个我没有源代码的库(或者它是用某种尚未意识到模块的非Java语言编写的)。没有,我不想将其用作自动模块,所以我想注入它。 我首先使用以下命令生成: 假设这生成了这样的内容: 然后,我尝试编译它,但是由于软件包和不存在而失败: 当然,我可以创建目录并在其中创建虚拟类,但是有更好的方法吗? 问题答案: 是的,使用该选件是可能的。此选项最常在运行时使用,但在编译时也可以使用:

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

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

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

  • 如何在新模块的libs文件夹中导入jar文件。 在模块构建梯度中添加:实现文件树(dir:“libs”,include:['*.jar]])实现文件('libs/your jar file.jar')

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