问题标签 [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 - 在 Eclipse 中,modulepath 和 classpath 有什么区别?
在 Eclipse 中,modulepath 和 classpath 有什么区别,我应该使用哪一个在lib文件夹中添加 JAR 文件?
为什么 JRE 系统库会出现在 modulepath 中?
java - 未找到 Java 9 自动模块
我正在尝试定义一个 Java 9 模块。我已经定义了类似的东西:
然后我的许多文件开始给我错误,他们找不到一些包。然后我使用了 IntelliJ 的自动帮助功能,它在我的 module-info.java 中添加了几个“需要”语句。所以它变成了这样:
现在 IntelliJ 显示我所有的代码没有错误。但是当我在“Maven 项目”窗口中单击“编译”时(我使用 Maven 3.5.3 和 Oracle JDK 10 进行编译),它告诉我以下信息:
据我了解,未定义为模块的第 3 方库会生成“自动”模块。所以我找到了我需要的罐子之一:
并想使用以下命令查看“自动”模块的名称是什么:
所以根据我的调查,我“需要”的模块名称是正确的!我错过了什么?为什么我会得到
和其他模块一样吗?我错过了一些路径还是什么?
编辑:根据要求,这是我的 pom.xml:
Edit2: 我尝试将以下内容添加到 maven-compiler-plugin 配置中:
然后尝试使用“mvn compile -X”对其进行编译以获取完整的调试日志,因此我执行了命令行进行编译:
但又一次......我明白了
和所有其他模块一样...
编辑3:
我创建了一个新项目,新项目编译良好(但我仍然需要编译原始项目!)。我做了同样的“mvn compile -X”命令,这就是我得到的:
为什么我在新项目中获得“模块路径”以及 Maven 命令行中的许多其他选项,而我在原始项目中没有获得它们?
java - 在运行时检查 --module-path 值
-p
有没有什么方法可以在运行时使用 of或参数获取包含在模块路径中的目录列表,--module-path
类似于我使用 获取所有类路径目录的方式System.getProperty("java.class.path")
?
java - Maven 和 Eclipse 之间启动 JavaFX 11 应用程序的不同行为
我开始深入研究大型应用程序(包括 Java FX 部分)的 Java 11 迁移,我需要您的帮助来了解命令行上的 Maven(3.5.4)和 Eclipse(2018-09 与 Java11 升级)之间的区别)。
我有一个简单的 Java 11 类
和一个简单的 pom
当我运行“mvn compile exec:java”时,我认为没有使用新的模块路径,程序按预期显示 JavaFX 面板。系统输出是:
jdk.module.path:空
jdk.module.upgrade.path:空
jdk.module.main:空
jdk.module.main.class:空
从 Eclipse 启动器运行时,我必须向启动器添加以下 vm 参数:
--module-path=${env_var:JAVAFX_PATH} --add-modules=javafx.controls
并且面板也显示,但输出是:
jdk.module.path : C:\dev\tools\javafx-sdk-11\lib
jdk.module.upgrade.path:空
jdk.module.main:空
jdk.module.main.class:空
jdk.module.main.class:空
我不能让它在 Eclipse 中工作,因为它是从命令行工作的:我被迫弄乱了模块和模块路径。如果我不添加 vm 参数,我会得到“错误:JavaFX 运行时组件丢失,并且需要运行此应用程序”或“启动层 java.lang.module.FindException 初始化期间发生错误:模块 javafx.controls未找到”。
它如何在没有更多配置的情况下从命令行工作?据我所知,Maven不会自动向模块路径添加任何东西......
任何想法 ?我错过了什么?
更新 1:我意识到当在 Eclipse 中“作为 Maven 项目”导入项目时(我总是这样做),它会导致 JRE 被添加到模块路径中(这不是我的 classis 项目的情况)。看截图
java - Gradle 和 Java 11:部分模块路径
我想用 Java 11 模块化我的 Gradle 项目。不幸的是,我的许多依赖项还不是模块化的。因此,mymodule-info.java
包含许多从依赖名称派生的自动模块。另外,我遵循了这个 Gradle 教程并将其添加到我的build.gradle
:
这里的大问题是许多依赖项包含相同的包名称,这会触发构建在许多类型实例上失败:
我想做的是告诉 Gradle 将模块化依赖项添加到模块路径中,并将冲突的依赖项保留在 classpath 中。这有可能吗,怎么做?
java - 为什么我的 Java9 模块服务不工作?
我正在用 IntelliJ IDEA 运行这段代码,但是看起来子模块没有运行。以下是程序的输出:</p>
java - 如何为多个模块生成javadoc
我正在尝试为单个文档中的多个模块创建 javadoc (jdk11)。
我试着这样做。
文件/目录结构为:
jdocOptions.txt 包含:
files.lst 列出所有 *.java 文件。
三个 module-info.java 文件包含:
我希望模块 net.virtualpsyclab.genutilsm 和 net.virtualpsyclab.maths 的文档出现在目录 workspace\doc 中,然后运行命令:
从目录工作区,我看到所有源文件显然正在处理,例如:
但这一切都以“javadoc:错误-找不到模块工作区”而告终。
非常感谢我在这里出错的任何帮助。
java - 打开项目时在 Eclipse 2018-12 中找不到自动模块
我想使用 Eclipse 2018-12 从 Oracle JDK 8 切换到 Open JDK 11。我有以下情况:
在我的 Eclipse 工作区中,我有一个名为example的主 maven 项目,其中包含一些 maven 依赖项 my_dependency_1、my_dependency_2,它们也是同一工作区中的 maven 项目。目前,只有一个例子是模块化的(因此包含一个module-info.java)。其他项目是非模块化的,包含在pom.xml以及example的module-info.java中的必需(自动)模块中。我认识到以下几点:
当我关闭工作区中除example之外的所有 Eclipse 项目时,所有(非模块化)依赖项 .jar 都会从模块路径中的 .m2 存储库中正确包含为自动模块,并且我的示例项目运行良好。我可以通过查看Run Configurations > Arguments > Show Command Line来验证这一点。
相反,当我在我的工作区中打开具有我的依赖项的项目时,依赖项不会包含在模块路径中,因此示例项目不会运行(导致启动层初始化期间发生错误,java.lang .module.FindException: 模块 my_dependency_1, ... 未找到,示例需要)。
我的问题是:如果我想在我的工作区中打开并使用它们以及我的模块化示例项目,我是否需要将所有my_dependencies_1, ...从非模块化依赖项转换为模块化依赖项,或者是否有任何选项可以让我保留即使使用非模块化依赖项目?我正在寻找一个简单而干净的解决方案,而不是手动将时髦的东西附加到启动参数的“hack”。如果这不可能,我宁愿花一些时间将每个依赖项转换为模块化依赖项,缺点是在仍然为 Java 8 编写的其他项目中不再可用。
感谢您的澄清:)
这是演示的基本示例:
pom.xml(项目示例)
Example.java(项目示例)
module-info.java(项目示例)
pom.xml(项目mydependency)
MyDependency.java(项目mydependency)
如果项目已关闭(正常工作) ,则运行时的命令行:
如果项目已打开(缺少目标/mydependency 的类),则运行时的命令行:
javafx - VSCode 中的 JavaFX-11:错误:无法找到或加载主类 Files\Java\javafx-sdk-11.0.2\lib
我一直在尝试在 Visual Studio Code 中设置 JavaFX-11。
我发现这篇文章JavaFX-11 with VSCode解释了如何做到这一点,并按照步骤操作。
vmArgs
但是,我需要通过在文件中添加一个条目来包含 JavaFX SDK 的模块路径launch.json
:
}
正如您在vmArgs
条目中看到的,是我到 JavaFX SDK 的本地路径。但是,当我尝试运行该程序时,出现以下错误:
错误:无法找到或加载主类 Files\Java\javafx-sdk-11.0.2\lib 原因:java.lang.ClassNotFoundException: Files\Java\javafx-sdk-11.0.2\lib
在过去的几个小时里,我试图弄清楚为什么它不起作用。我写的论点错了吗?我看到有.jmods
文件。我应该下载这些文件吗?有没有其他方法可以指定模块路径?
值得一提的是,我在 Windows 10 中运行 Visual Studio Code,所以我必须使用转义序列来使用反斜杠。
java - Intellij 中的 JavaFX 和 Maven:设置了 JAVA_HOME 但“无法识别的选项 --module-path”错误仍然存在
在 Intellij (2019.1) 中使用 Maven 和 JavaFX。我一直在关注本教程。
我有一个不断发生的奇怪错误 - 每次我继续运行javafx:run
插件时,它都会失败,并给出以下错误:
但是,当我将可执行文件放在javafx-maven-plugin
( <executable>"C:\Program Files\Java\jdk-12.0.1\bin\java.exe"</executable>
) 中时,它可以工作。我在 Windows 上并设置了安装 JDK的JAVA_HOME
系统环境变量。C:\Program Files\Java\jdk-12.0.1
这是一个奇怪的问题,并不重要,但很高兴知道答案。
编辑:
pom.xml
:
其他图片:
环境路径
另请注意,这C:\Program Files\JetBrains\IntelliJ IDEA 2019.1.1\bin
是在用户路径中。