问题标签 [module-info]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1485 浏览

java - Java 9 中会出现循环模块依赖吗?

在 Java 9 中,是否允许使用循环模块?如果不是,原因是什么?

0 投票
2 回答
44004 浏览

java - 无法从 java.base 模块导出包

使用 IDEA-EAP 进行 JDK9 开发实验。

我收到以下错误 -

类定义为 -

我尝试module-info.java在使用 IDE 创建的模块中也包含一个文件,其中包含以下语句 -

目录结构现在看起来如图所示 -

目录结构

IDE 虽然反映了module-info.java未使用的情况,这可能是我无法定义上述module com.jigsaw.npe尝试的原因。

寻找有关如何正确放置 module-info.java 和/或我错过的任何其他内容的帮助。

0 投票
1 回答
1780 浏览

java - 为什么不允许导出整个模块?

在 Java 9 的模块声明中,有两种结构:

Whereexports授予编译时访问,而opens允许运行时访问,作为反射和资源。

opens有一个宽大处理exports,您可以将整个模块定义为打开,结果与显式打开每个包相同:

但是没有类似的结构

我的问题:为什么会这样;已做出哪些决定允许一次打开整个模块但不允许导出?

0 投票
1 回答
17440 浏览

java - 启动 Jetty 服务器时扫描条目“module-info.class”时出错

我最近在启动我的 java 服务器时看到了这个。有没有其他人看过这个?如果是这样,解决方法是什么?我可以确认 jar 和 module-info.class 存在于相关路径中。

0 投票
3 回答
3225 浏览

java - What's the purpose of 'uses' directive in Java 9?

Java's ServiceLoader class is now officially baked into the Java language. Instead of looking for providers in META-INF/services you can now use the

What I fail to understand is, the use of uses in the service loading module declaration:

Quoting from The State of the Module System

The module system could identify uses of services by scanning the class files in module artifacts for invocations of the ServiceLoader::load methods, but that would be both slow and unreliable. That a module uses a particular service is a fundamental aspect of that module’s definition, so for both efficiency and clarity we express that in the module’s declaration with a uses clause:

Why is it fundamental for the module system to know uses of a particular service, especially how will this introduce efficiency? Aren't services loaded lazily? Why can't the service loader just look for providers on the fly?

0 投票
1 回答
296 浏览

java - 模块信息类中提供了服务接口但未导出或使用警告

的实现有点像java.management.rmimodule-info.java

对于这两个provides语句,我都看到了编译器警告说明

提供但未导出或使用的服务接口

当我尝试在另一个模块中使用它们时,我最终猜错了:

警告仍然存在。

此外,我还可以到达java.management's module 找到

仍然发出此警告的原因是什么,如何解决?

根据评论中的要求附上截图:

在此处输入图像描述

0 投票
1 回答
2267 浏览

java - java 9找不到log4j2配置文件

我有一个 Java 8 项目,我的配置文件在资源文件夹中,一切正常。现在我切换到Java 9,添加了对 的要求log4j.api,并且找不到配置文件了。

我是否需要在我的module-info文件中添加其他内容以便记录器找到它的配置?

目前是这样的

项目结构如下:

结构体

build.gradle 文件如下:

在此处输入图像描述

0 投票
1 回答
1256 浏览

java - Java9 中的 Synthetic 和 Mandated Modifier 有什么区别

java 文档中的ModifierforExports指出

MANDATED 导出是在模块声明的源中隐式声明的。

SYNTHETIC 导出未在模块声明的源中显式或隐式声明。

看几个module-info.classes,可以看出一般有两种用法:

合格的导出确实描述了这两种类型,但没有提到枚举类型。这些是文档中提到的不同类型吗?

Q1。通常,SYNTHETICand、和MANDATED中使用的修饰符。这两者之间有什么区别,在实践中一个优于另一个?ExportsModuleDescriptorOpensRequires

Q2。如果没有在模块的源代码中声明,那Synthetic Modifier是一个无论如何的例子?

0 投票
1 回答
477 浏览

java - Java 9中的自动模块可以读取导出包中命名模块的类吗?

我想看看 Weld CDI 容器如何与 JPMS 一起工作。所以我有以下配置。

我有我的命名模块和weld-se-shaded 作为自动模块。在我的模块中,我有

新班级

新豆类

这就是结果

如何解释这个异常

原因:java.lang.reflect.InaccessibleObjectException:无法使字段私有 com.foo.NewBean com.foo.NewClass.bean 可访问:模块 my.module 没有“打开 com.foo”到模块weld.se.shaded

这里 有一张表在此处输入图像描述 ,我可以从中了解到自动模块可以读取命名(应用程序)模块。那为什么不呢?

0 投票
3 回答
718 浏览

java - Java 9 中的文件夹/目录名称是否存在模块名称的问题?

从这个来源引用,它提到

包含模块源的目录的名称应该与模块的名称相同,例如 de.consol.devday.service

考虑到文件夹名称受操作系统的字符限制(例如,Windows 的最大长度为 255)并且可能限制我们如何命名文件夹和模块,这是一个好的建议吗?

希望Java核心团队的人可以对此提供见解并提供建议。

从这里引用另一个例子:- 在此处输入图像描述

模块名称跟随文件夹名称,文件夹名称受 255 个字符限制,可扩展吗?

可能是在实际代码中,文件夹名称很可能没有达到该限制,但是应该在官方 Java 文档中提到这种限制以考虑这种方式(也许它有?或者有人可以指出,如果有的话?)

感谢