问题标签 [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.
java - 将 Java 应用程序从 Java 8 迁移到 Java 11
提前谢谢,谁会帮助我。
故事:到目前为止,我的应用程序正在使用JDK8
,但现在我正在将我的应用程序迁移到Open JDK11
并IVY
用作依赖项管理器和Ant
构建工具。
问题:我在 Eclipse 中遇到了编译时问题javax
,但后来我JRE
将构建路径中的 lib 从classpath
为Modulepath
. 现在一切正常。但现在主要问题是,在运行antbuild.xml
usingAnt
时,这仍然给我同样的编译时错误。我想我现在知道该做什么,但我不知道该怎么做。我必须Open JDK11
在antbuild.xml
.
主要问题:如何(BASICALLY ANT BUILD FILE)Open JDK11
为模块路径antbuild.xml
如果问题仍然无法理解,请告诉我。
java - Java中的modulepath环境变量类似于CLASSPATH
在以前的 Java 版本中,例如,如果您在具有目录结构的 windows 中有一个用户定义的包 org.mypackage
您可以使用 CLASSPATH 环境变量让 JVM 知道该包。
例如:
命令是否set MODULEPATH
让 JVM 知道最新版本 Java 中用户定义模块的位置?
如果是这样,为什么 classpath 命令仍然存在,它现在有什么用途?
java - --module-path 命令是否临时设置了模块路径?
我注意到,一旦我使用了该--module-path
命令,我必须在编译同一个 java 文件时再次使用它。
这是因为--module-path
命令临时附加到模块路径吗?如果是这样,有没有办法--module-path
永久设置?
java - 如何让类路径上的 java 类访问属于模块路径上的模块的类
我正在尝试关于谁可以访问和什么的各种访问规则,我在模块系统文档的状态中看到了这个声明,
未命名的模块读取所有其他模块。因此,从类路径加载的任何类型的代码都可以访问所有其他可读模块的导出类型,默认情况下,这些模块将包括所有命名的内置平台模块。
因此,我编写了以下代码以使用以下结构对其进行测试:
基本上,
moduleA
modA.A
调用非模块化类的方法automod.Foo
。automod.Foo
被包装成automod.jar
并放在module-path
. moduleA 的 module-info 有requires automod;
子句。正如预期的那样,这工作正常。automod.Foo
调用nonmodular.Junk
类上的方法。nonmodular.Junk
被包装成nonmodular.jar
并穿上classpath
。正如预期的那样,这工作正常。nonmodular.Junk
调用 moduleX 上的方法modX.X
。modX.X
被打包成moduleX.jar
. 就是这一步有问题。如果我将 moduleX.jar 放在类路径上,但如果我将 moduleX.jar 放在模块路径上,它就可以工作。(moduleX 的模块信息确实有exports modX;
子句。)
换句话说,以下命令有效:
使用以下输出:
但以下命令不起作用:
这是输出:
知道为什么吗?从类路径加载的任何类都应该能够访问模块导出的任何类。
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 模块。
我努力了:
- 将 JavaFX jmod 文件复制到
/usr/lib/jvm/jdk-12.0.2/jmods
. 但即使重新启动后,java --list-modules
也不包括 JavaFX 模块。我也跑过
- 我不认为创建 .sh 脚本文件是一个好主意,因为脚本文件需要与 .jar 文件一样多。
非常感谢任何帮助。我在 Kubuntu 上。
java - 由于无法识别的选项,在 Netbeans 11 中运行示例 JavaFX Maven 时出错:--module-path
我尝试按照本教程创建一个新的 JavaFX 项目。 https://openjfx.io/openjfx-docs/#install-javafx 我也尝试了示例项目。
最后,请注意,您可以从 NetBeans -> File -> New Project... -> Samples -> OpenJFX 获得类似的内置示例
在这两种情况下,我都会收到相同的错误消息。
java - 如何在命令行上为java的modulepath指定多个jar文件?
对于java
命令行工具,现在有作为(or ) 选项--module-path
的替代选项。--class-path
-cp
使用 classpath 选项,您可以指定通配符以包含给定目录中的所有 jar。例如:
对模块路径执行相同操作似乎不起作用。那里可以使用通配符吗?
java - 如何修复找不到模块:spring.web 和类似错误
我正在尝试使用 Java 11 构建一个简单的 maven spring-rest 应用程序,但我不断收到“模块未找到错误”。
我在 SO 上阅读了很多类似的问题。我尝试了各种建议 - 删除 maven 存储库,解决一些警告等,但我仍然无法使项目工作。
我的父母pom:
儿童绒球:
模块信息.java:
当我运行 maven clean install 时,我得到以下信息:
另外,我添加了 VM 选项--show-module-resolution
,列表中没有 spring 模块
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/,另一个说它进入一个名为模块名称的目录。显然两者都是正确的,但他们没有解释原因,并且存在明显的矛盾。