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

JDK9中预定义的模块是什么?或者我需要解决依赖关系的模块?

庾波光
2023-03-14
问题内容

JDK9将(可能)引入一个模块系统。作为其一部分,Java类库将被模块化。

当找不到类时,这会导致异常,因为它们位于尚未指定为依赖项的模块中。

用模块系统将创建哪些模块,它们各自的内容是什么?

或换句话说:给定一个未加载的类,如何找到合适的模块作为依赖项包含?


问题答案:

如何找到合适的模块作为依赖项?

考虑这个欺骗类:

import java.sql.DriverManager;
import java.rmi.RemoteException;

public class UserDao {
    DriverManager driverManager = null;

    public void service() throws RemoteException {
        if (true) {
            throw new RemoteException();
        }
    }
}

假设将该类编译为user-dao.jar。答案是jdeps工具(使用9ea170):

jdeps --list-deps user-dao.jar
   java.base
   java.rmi
   java.sql

(请注意,jdepsJDK 8附带了该功能,但在JDK 9中更合适。)

为了完整起见,如果您知道代码使用特定的类(例如java.sql.DriverManager),并且怀疑需要一个模块(例如java.sql),则可以通过doc或在命令行(再次使用9ea170)确认该模块:

bash$ java --describe-module java.sql
java.sql@9-ea
exports java.sql
exports javax.sql
exports javax.transaction.xa
requires java.xml transitive
requires java.base mandated
requires java.logging transitive
uses java.sql.Driver


 类似资料:
  • JDK9(可能)将引入一个模块系统。作为其中的一部分,Java类库将模块化。 这可能导致在找不到类时出现异常,因为它们位于尚未指定为依赖项的模块中。 模块系统将创建哪些模块,它们各自的内容是什么? 或者换一种说法:给定一个未加载的类,如何找到合适的模块作为依赖项包含?

  • 问题内容: 我有一个简单的节点应用程序,它对github上另一个应用程序具有单一依赖性。使用可以很好地安装依赖项,但是当我尝试在其中安装某些东西时,它说不可用。例如,github应用程序将Mongoose安装为依赖项。我认为该父应用程序可以访问该模块,因为它位于子模块中: 结构看起来像这样: 我是否只需要在父级应用程序中同时包含猫鼬作为依赖项,还是可以通过子级方式访问该模块? 问题答案: 我是否只

  • 在使用Maven一段时间后,我对Maven在构建体系结构中带来的许多特性感到兴奋,尤其是依赖项管理。然而,我一次又一次地遇到了一个问题--Maven如何解决多模块项目之间的依赖关系。我想知道这是否是当前Maven实现的大缺陷和/或是否有任何令人满意的解决方案。 假设我有一个多模块的Maven项目。父pom包含三个模块--moduleA(jar)、moduleB(jar)和moduleC(war)。

  • 应用程序 SlidingMenu(源文件) SlidingMenu-Maps-Support(源文件) 这里有一个链接,看看我的意思。 这就是我得到的错误。 谢谢! 编辑1:不要紧!我又回到月食了!Android Studio还没有为真正的项目开发做好准备。

  • 我有一个多模块Maven项目,其中包含子模块ModuleA和ModuleB等。ModuleA将ModuleB列为依赖项。但是,当仅构建模块A时,Maven不会解决模块B的依赖关系-导致。我想避免构建整个父级以使构建更快。目前我发现让它工作的唯一方法是使用exec插件和脚本,将父项目称为“ModuleB, ModuleA”,这意味着我必须在每次依赖项更改时更改脚本(例如添加ModuleC)。 是否有

  • 我想下载使用ivy的工件:解决,但使用使用[conf]属性的模式。所以我在IvyS中定义了以下内容ettings.xml 注意这个模式 现在可以很好地解决依赖关系,但只为配置创建了一个文件夹:默认。没有为ConfGroup1创建文件夹 另外,我知道这可以通过使用ivy:retrieve实现,但我不想使用它,因为它将涉及将工件从ivy缓存复制到ivy:resolve之后的另一个地方,我有价值数十亿字