问题标签 [module-path]

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 投票
1 回答
1753 浏览

java - 将 Java 应用程序从 Java 8 迁移到 Java 11

提前谢谢,谁会帮助我。

故事:到目前为止,我的应用程序正在使用JDK8,但现在我正在将我的应用程序迁移到Open JDK11IVY用作依赖项管理器和Ant构建工具。

问题:我在 Eclipse 中遇到了编译时问题javax,但后来我JRE将构建路径中的 lib 从classpathModulepath. 现在一切正常。但现在主要问题是,在运行antbuild.xmlusingAnt时,这仍然给我同样的编译时错误。我想我现在知道该做什么,但我不知道该怎么做。我必须Open JDK11antbuild.xml.

主要问题:如何(BASICALLY ANT BUILD FILE)Open JDK11为模块路径antbuild.xml

如果问题仍然无法理解,请告诉我。

0 投票
1 回答
2900 浏览

java - Java中的modulepath环境变量类似于CLASSPATH

在以前的 Java 版本中,例如,如果您在具有目录结构的 windows 中有一个用户定义的包 org.mypackage

您可以使用 CLASSPATH 环境变量让 JVM 知道该包。

例如:

命令是否set MODULEPATH让 JVM 知道最新版本 Java 中用户定义模块的位置?

如果是这样,为什么 classpath 命令仍然存在,它现在有什么用途?

0 投票
0 回答
86 浏览

java - --module-path 命令是否临时设置了模块路径?

我注意到,一旦我使用了该--module-path命令,我必须在编译同一个 java 文件时再次使用它。

这是因为--module-path命令临时附加到模块路径吗?如果是这样,有没有办法--module-path永久设置?

0 投票
1 回答
574 浏览

java - 如何让类路径上的 java 类访问属于模块路径上的模块的类

我正在尝试关于谁可以访问和什么的各种访问规则,我在模块系统文档的状态中看到了这个声明,

未命名的模块读取所有其他模块。因此,从类路径加载的任何类型的代码都可以访问所有其他可读模块的导出类型,默认情况下,这些模块将包括所有命名的内置平台模块。

因此,我编写了以下代码以使用以下结构对其进行测试:

基本上,

  1. moduleAmodA.A调用非模块化类的方法automod.Fooautomod.Foo被包装成automod.jar并放在module-path. moduleA 的 module-info 有requires automod;子句。正如预期的那样,这工作正常。

  2. automod.Foo调用nonmodular.Junk类上的方法。nonmodular.Junk被包装成nonmodular.jar并穿上classpath。正如预期的那样,这工作正常。

  3. nonmodular.Junk调用 moduleX 上的方法modX.XmodX.X被打包成moduleX.jar. 就是这一步有问题。如果我将 moduleX.jar 放在类路径上,但如果我将 moduleX.jar 放在模块路径上,它就可以工作。(moduleX 的模块信息确实有exports modX;子句。)

换句话说,以下命令有效:

使用以下输出:

但以下命令不起作用:

这是输出:

知道为什么吗?从类路径加载的任何类都应该能够访问模块导出的任何类。

0 投票
1 回答
3963 浏览

java - 将 JavaFX jmods 添加到 java --list-modules

前言:

我需要打开需要 Java 和 JavaFX 的 .jar 文件。我已经安装了 Java(来自 Oracle 网站)和 JavaFX(来自 openjfx 网站的 SDK)。我通过更新/etc/environment文件添加了环境变量,并添加了JAVAFX_HOME="path/to/JavaFX".

/etc/environment文件看起来像:

现在,我可以通过执行以下命令来运行 .jar 文件:

java --module-path $JAVAFX_HOME --add-modules ALL-MODULE-PATH -jar myfile.jar

有多个 .jar 文件,这使得执行上述命令非常麻烦。.jar 文件的名称也非常不吸引人且复杂。

问题:

我想知道我是否可以将 JavaFX jmods 永久添加到 Java。例如,当我们在终端中执行时java --list-modules,它也应该包含 JavaFX 模块。

我努力了:

  1. 将 JavaFX jmod 文件复制到/usr/lib/jvm/jdk-12.0.2/jmods. 但即使重新启动后,java --list-modules也不包括 JavaFX 模块。我也跑过
  1. 我不认为创建 .sh 脚本文件是一个好主意,因为脚本文件需要与 .jar 文件一样多。

非常感谢任何帮助。我在 Kubuntu 上。

0 投票
1 回答
727 浏览

java - 由于无法识别的选项,在 Netbeans 11 中运行示例 JavaFX Maven 时出错:--module-path

我尝试按照本教程创建一个新的 JavaFX 项目。 https://openjfx.io/openjfx-docs/#install-javafx 我也尝试了示例项目。

最后,请注意,您可以从 NetBeans -> File -> New Project... -> Samples -> OpenJFX 获得类似的内置示例

在这两种情况下,我都会收到相同的错误消息。

0 投票
1 回答
1516 浏览

java - 如何在命令行上为java的modulepath指定多个jar文件?

对于java命令行工具,现在有作为(or ) 选项--module-path的替代选项。--class-path-cp

使用 classpath 选项,您可以指定通配符以包含给定目录中的所有 jar。例如:

对模块路径执行相同操作似乎不起作用。那里可以使用通配符吗?

0 投票
0 回答
118 浏览

java - 如何配置 Maven 以在 Modulepath 中保留“Maven 依赖项”?

我有一个带有 Maven 的简单 Java 项目。

默认情况下,通过 Maven 加载的依赖项最终在一个“Maven 依赖项”库中,该库被添加到class-path

在eclipse中它看起来像这样:
在此处输入图像描述

无论出于何种原因,我都需要module-path中的那些依赖项,如下所示: 在此处输入图像描述

我的问题是,每次我运行 maven update 时,它​​都会将“Maven Dependencies”库重置为class-path

如何配置项目或 pom 文件以将库保存在 module-path 中

0 投票
1 回答
1583 浏览

java - 如何修复找不到模块:spring.web 和类似错误

我正在尝试使用 Java 11 构建一个简单的 maven spring-rest 应用程序,但我不断收到“模块未找到错误”。

我在 SO 上阅读了很多类似的问题。我尝试了各种建议 - 删除 maven 存储库,解决一些警告等,但我仍然无法使项目工作。

我的父母pom:

儿童绒球:

模块信息.java:

当我运行 maven clean install 时,我得到以下信息:

另外,我添加了 VM 选项--show-module-resolution,列表中没有 spring 模块

0 投票
1 回答
1320 浏览

java - module-info.java 在哪个目录下?

从项目Jigsaw的快速入门教程中,似乎 module-info.java 进入了具有模块名称的目录,例如,对于包含类 MyClass 的模块 my.module:

然后,仍然按照教程,在调用 MyClass 时(假设它有一个method),模块路径选项被赋予bin目录:

到目前为止,一切都很好。

但是,如果我写它也可以:

而且我不明白为什么两者都有效。

如果bin包含两个模块,则没有区别:如果两个目录都在模块路径中,则第二个版本仍然有效(如果仅bin在模块路径中,它也有效,如教程中所述)。


现在,当我尝试使用 Java 9 模块使用 Eclipse 创建 Maven 项目时,module-info.java 位于src/man/java目录中,同样 module-info.class 位于target/classes. 所以现在包含 module-info.class 文件的目录与模块的名称没有关系。

并且target/classes也在模块路径中(当我检查构建配置时)。这类似于上面的第二种情况,使用java -p path/to/bin/my.module -m my.module/my.module.MyClass. 那么,显然,Java 仅使用 module-info.class 的内容来发现模块名称,而目录名称是任意的?

但是,在第一种情况下,当我写 时java -p path/to/bin -m my.module/my.module.MyClass,这意味着 Java 将在模块路径中的目录中查找目录。

我觉得我错过了一些重要的东西。Java 在模块路径中的目录中查找模块的方式是否有明确的解释?什么真正指定了一个模块?(我的印象是:不是目录,只有module-info.java)。


让我更加困惑的是:Oracle 文档指出:

--module-path 模块路径... 或 -p 模块路径

分号 (;) 分隔的目录列表,其中每个目录都是模块目录。

但显然这不是全部,至少不是 Eclipse 使用此选项的方式。


注意:我见过这个问题,但它并没有真正帮助:一个答案说 module-info.java 进入 src/java/,另一个说它进入一个名为模块名称的目录。显然两者都是正确的,但他们没有解释原因,并且存在明显的矛盾。