在Java9中似乎不允许有所谓的拆分包,即在两个不同的模块中定义同一个包。这导致了我的迁移过程中的一个问题:(Gradle)项目包含一个名为bootstrap.jar
的Jar文件,其结构如下:
bootstrap.jar
- com
- example
- Foo.class
- Bar.class
- Baz.class
<code>src</code>目录包含一个类<code>com.example。条形图依赖于Foo
>以及com.example
的模块定义。<code>引导程序。jar文件不包含模块信息,因为它是在Java9之前编译的,所以它使用一个名为bootstrap
的自动模块。问题是现在包<code>com。示例在两个模块com中定义。示例
和引导
。
首先,存在这个bootstrap.jar
文件的原因如下:
src/com/example
文件夹实际上包含 Bar.java
、Baz.java
和另一个文件 Foo.dyvil
。后者是用基于 JVM 的编程语言编写的。所以依赖链看起来像这样:
Bar.java -> Foo.dyvil -> Baz.java
在构建过程中,它被编译成< code>Foo.class,该文件被放在一个新的Jar文件中,该文件后来取代了< code>bootstrap.jar。放置所有这些文件的原因是,Java和Dyvil编译器都不能处理其他语言的文件,所以它们需要访问以前编译的类。这就是为什么有< code>bootstrap.jar的原因。
现在来看实际的问题:既然Java9中不允许拆分包,那么有什么方法可以像我的项目中所描述和使用的那样使用“引导”jar文件来实现“拆分构建”吗?或者还有其他方法吗?
尽管对此的长期解决方案是将此类包解析为存在于单个模块中,然后模块化代码。
作为临时解决方案,您可以使用以下选项
--patch-module <module>=<file>(<pathsep><file>)*
就像你一样
--patch-module com.example=bootstrap.jar
请记住,< code> - patch-module选项仅用于测试和调试。强烈建议不要在生产环境中使用。
我是Java和Spring Boot的初学者,我在Spring Boot上使用< code>Pagination,用这个代码我返回用户列表,如果我想返回页数,我必须这样做? 我知道使用我可以获取页数,但如何返回它?
问题内容: 我有以下字符串: 我“肯定”想“上学”。 现在,我想在省略号处分割此字符串,即我想获得以下输出: 我会 一定 喜欢 上学 。 问题答案: 如果您是用引号()代替省略号,最简单的解决方案是使用 :
如何解决composer中的分段错误?安装后会发生这种情况 /c/ProgramData/ComposerSetup/bin/composer:第18行:1024分段错误php"${dir}/composer.phar"$*
问题内容: 如何在特定索引处拆分字符串?例如,在索引10处分割字符串,使该字符串现在等于直到索引10的所有内容,然后转储其余部分。 问题答案: 关于或取决于索引10是否应包含或不包含索引呢?您必须检查一下。 一个替代方案是
问题内容: 为什么我经常出错? 其实我也尝试过这个: 谢谢 问题答案: Swift对于运算符周围的空白有严格的规定。除’/’是 二进制运算符 。 重要规则是: 如果运算符的两边或两边都没有空格,则将其视为二进制运算符。例如,a + b和a + b中的+运算符被视为二进制运算符。 如果运算符仅在左侧具有空格,则将其视为前缀一元运算符。例如, b中的 运算符被视为前缀一元运算符。 如果运算符仅在右侧具