问题标签 [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 - 有没有办法修改模块路径和程序化 JShell 实例的添加模块?
我试图通过我使用JShell API创建的 JShell 实例在运行时运行一些 Java 代码。为了演示我的问题,我将分享我的简单代码。
使用我当前的设置,我有一个名为lib的目录,其中包含 MySQL Java 驱动程序:mysql-connector-java-5.1.35.jar。
通过命令工具启动 JShell 并将所需的模块添加为:
然后加载mysql驱动程序对我有用:
我创建了一个类似的 Java 9 模块module-info.java
:
src/example/loadmysql/Runner.java为:
构建/打包后:
很明显,即使example.loadmysql模块需要 mysql 连接器,创建的 JShell 实例也不需要。所以它找不到类。
关于如何以编程方式将模块添加到 JShell 实例的任何想法,因此它像直接 JShell 编码示例一样工作?
更新- 我已经弄清楚如何设置模块路径:
但这还不够。我仍然以某种方式添加了所需的模块。
java - Java 9 自动模块依赖无法解析/找不到模块
我正在尝试将一些遗留应用程序迁移到新的 Java 9 模块系统,以加强其封装。
我从外向内开始,假设外围的类具有最少的外部依赖性。
正如你所料,我已经声明了一个非常开放的模块:
这会立即破坏整个项目(在所有类中),突然每个外部依赖项的导入都不再解决(导致超过 1k Java 问题):
导入 com.otherexample 无法解析
导入org.springframework无法解析
等等
同一个项目中的本地包com.example.price
仍然有效 - 就像java.util
等一样。
所有外部依赖项都由 Maven 管理。在(Eclipse 项目)构建路径中,我仍然可以将它们视为“类路径”依赖项——但只有“模块路径”中的 JRE 系统库。
这两个概念可以共存吗?目前似乎module-info.java
在项目中的任何地方都有一个,所有类路径依赖项都停止工作?
我确实读过有关使用自动模块的信息,这似乎暗示您可以通过将它们包含在您的模块路径中来使用旧版/非模块化 jar,然后通过它们的文件名引用它们。他们使用示例:
我找不到太多其他信息,但这似乎与 Eclipse 在自动生成 module-info.java 时使用的约定相匹配,例如:
变成:
但是,这仍然会导致 Eclipse 报告 Java 错误:
spring.core 无法解析为模块
马文报告:
...并且项目中具有外部依赖关系的每个类仍然被破坏。
java - java 9和maven的Eclipse问题
我安装了版本:Oxygen.1a Release (4.7.1a) Build id: 20171005-1200支持 Java 9。
在 eclipse.ini 上建议配置
我已经开发了 java 9(java 9 模块化)代码项目来测试依赖注入作为来自 Eclipse 的纯 Java 项目,但是当我集成 Maven 从 Eclipse 运行我时,我系统地得到以下错误
启动层初始化时出错java.lang.module.FindException: Module com.my.module.hello.test not found
唯一的解决方案是添加 VM 参数
实际上,如果将我在加载期间可以看到的详细参数添加到 Vm 参数
... [0.694s][info][class,load] java.lang.NamedPackage 源:jrt:/java.base [0.697s][info][class,load] com.my.module.hello.MyHello 源: file:/C:/Users/212442540/workspace-training/my-module-prj/my-module/target/classes/ [0.698s][info][class,load] java.lang.module.ModuleDescriptor$$ Lambda$24/2114889273 来源:java.lang.module.ModuleDescriptor ...
当我删除“--module-path”参数时,这条线消失了。
注意:Eclipse 在编译或编辑过程中能够正常工作。看到完成等等..
我也在我的项目中添加了 modpath 依赖项
强制依赖项目配置
因此,Eclipse 似乎能够编译 java 9 模块,但如果与 maven 集成,则无法运行模块。
强制依赖 Configratin Run 我还手动添加了依赖关系 图 1
但日食继续删除它们。
前:
图 2
运行 eclipse 后恢复:
如果与 maven 集成,eclipse 似乎会系统地重置配置。
java - 如何在模块路径中添加几个 jar?
我有以下情况:
模块地址:
模块人:
我正在使用 Maven 构建它们,因此每个模块都有自己的目标目录和 jar 文件。
我正在尝试运行具有这样的主类的模块 Person
但我得到的许可被拒绝。如何设置包含多个模块的模块路径?
gradle - 在 Java 9 模块路径和类路径之间拆分 Gradle 依赖项:自动模块
我按照关于构建 Java 9 模块的 Gradle 指南开始了一个简单的基于 Java 9 的库项目。特别是我按照指南中的建议手动设置我的模块路径,如下所示:
请注意,这只是将我的整个类路径(由 Gradle 从我的依赖关系图中确定)转移到模块路径上。
除了一个简单的问题外,一切都很好。我的一些依赖项(例如 org.jetbrains.kotlin:kotlin-stdlib-1.2.10
)不是真正的 Java 9 模块,因为它们缺少module-info.class
. 将它们粘贴在类路径或模块路径上很好,因为现在将java
它们转换为所谓的自动模块。
出现问题是因为即使是自动模块,如果它在我的模块路径上,我需要在我的项目模块的requires
指令中引用它。但是因为我选择了 Java 编译器,所以会生成以下警告:-Xlint:all
javac
这个警告对我来说是站不住脚的,因为我也跟着-Werror
javac
旗子滚动,所以它使我的构建失败。
所以似乎我需要将自动模块推送到我的类路径中,并且只在模块路径上保留“真正的”模块依赖关系......
是否有任何通用或半通用方式(即不与依赖项名称耦合)在编译器类路径及其模块路径之间拆分我的依赖项?
java - java 9 未命名模块在调试时从两者中读取包 [X](使用 IntelliJ)
在我的项目中,我有一个使用多个 3rd 方库的包。让我们看一下依赖树:
到目前为止,编译和运行工作正常。
但是当我开始使用 IntelliJ 进行调试时,我会得到一个包含 100 多个错误的列表,例如:
由于新的 Java 9 模块限制,这似乎是一个错误。但是这里怎么处理呢?
org.opensaml 都是 wss4j-ws-security-common 2.2.1 的一部分(这是最后一个版本,于 2018 年 1 月发布)。opensaml.saml.api 和 opensaml.saml.impl 是 3.3.0 版本,并且都使用相同版本的 org.opensaml.saml.config。所以???
为什么“mvn compile”通过了,但是用 IntelliJ 调试却失败了?
java - Java 9 错误:不在模块源路径上的模块中
项目结构
我有一个用 Java 8 编写的项目,我想将它更新到 Java 9。所以我将这些类分成 2 个单独的模块。模块:
org.ggp.base
与module-info.java
在目录中org.ggp.base/src/main/java
。在我开始更新到 Java 9 之前,它的构建是使用 Gradle 自动完成的。该模块使用 module.xml 中包含的抽象类实现pl.edu.prz.klopusz
。pl.edu.prz.klopusz
在目录中pl.edu.prz.klopusz/dolar-app/src/main/java
。我想使用 Maven 自动化它的构建。该模块需要org.ggp.base
模块。
文件树如下所示:
文件内容module-info.java
如下:
汇编
我尝试使用以下命令编译项目:
错误
我收到以下错误:
org.ggp.base/src/main/java/module-info.java:1:
模块 org.ggp.base {
包内的类还有 99 个其他错误org.ggp.base
,每个都像:
org.ggp.base/src/main/java/external/JSON/JSONObject.java:1:
包外部.JSON;
或者
org.ggp.base/src/main/java/org/ggp/base/validator/OPNFValidator.java:1:
包 org.ggp.base.validator;
我想要的是
我想摆脱错误并编译项目。我不必保留目录结构,但是当我将它们放在一起时,有 2 个module-info.java
文件,编译器抱怨多个模块。我可以通过 IntelliJ IDEA 来完成,我不介意,我试过了。但我不知道幕后发生了什么,我也不知道如何处理错误(Package is empty: org.ggp.base
)。
我已经找到的
很难找到有关--module-source-path
切换javac
命令的文档。这个网站是我找到的。它说:
如果您在模块中安排代码,以便将模块的代码放在以模块命名的封闭目录中,则模块源路径变得更像是一个简单路径,如或者如果它在多个项目中,请使用
对于 Windows,使用反斜杠和分号,但无论如何我都在使用 Linux。
OpenJDK bugs site 上的问题也有评论,与我的错误相同,但我想它仍未解决。
更新
-verbose
转变
我-verbose
在命令末尾添加了开关。这是编译器所说的一部分:
所以,我认为这不是--module-source-path
switch 路径的错误(*src/main/java
@StephanHerrmann 指出了同样的行为)。它读取它应该读取的所有 java 源代码。pl.edu.prz.klopusz
模块中的源没有问题。这些是第一行org.ggp.base.util.statemachine.MachineState
:
java - 在 javac (JDK 9) 中混合 --class-path 和 --module-path
我试图关注这个问题,但它对我不起作用。我想编译 1 个模块(不需要任何其他模块或 jar)以及使用该模块并将位于未命名模块中的其他类。
运行此命令后,我得到“包 org.... 不存在”。但是这个包的 jar 在 lib 目录中
lib - 包含我的库-jar 的目录
modules - 此文件夹包含带有 module-info.java 的模块“simpleModule”
@classes.txt - 要编译的所有类列表(包括模块化和非模块化)。操作系统 - Windows
当我从 simpleModule 中删除 module-info.java 时,一切都编译得很好。
java - intellij java-9 build path-模块路径设置
我知道 intellij 支持 java9,并且我知道如何通过将库添加到构建路径来在 intellij 上设置类路径。
但是它在 java 9 中是如何工作的,intellij 中是否有模块路径部分?
如果 java 9 在模块路径上找不到类,我认为它会使用类路径。那么在intellij设置上应该同时存在类路径和模块路径吗?
最后一个问题,当我向库(java8 jar)添加一个 jar 时,它是一个未命名的模块还是什么时候是一个自动模块?
python - Python:没有名为 xxx 的模块
我的 Raspberry Pi 上出现以下错误,我一无所获:
我自己的 Python 脚本从另一个名为 BlackBean.py 的模块调用一个函数,该模块又导入名为“netaddr”和“configparser”的其他模块。问题是我似乎无法克服导入错误,它告诉我“没有名为 netaddr 的模块,或者如果我注释掉该导入,那么它也会在没有名为 configparser 的模块的情况下出错。所以我知道这是一个路径问题,但我只是似乎无法修复它!
Blackbean.Py 脚本的开头是这样的:
BlackBean.py 文件位于我的项目 SkyHD 文件夹中,位于 /home/pi/SkyHD。“netaddr”和“configparser”文件和文件夹由 pip 安装在 /home/pi/.local/lib/python2.7(和 python3.5)/site-package 文件夹中。
sys.path 在其列表中有上述文件夹,我还编辑了 .bashrc 并添加了 PYTHONPATH=${PYTHONPATH}:/home/pi/.local/lib/python2.7/site-package:/home/pi/.local /lib/python3.5/site-package:/home/pi/SkyHD:../ 但这些都不起作用。我想这一定是一些基本的东西,但我就是无法解决!帮助!
此外,还有更多信息,当我第一次安装所有文件并运行我的程序时,一切正常,它发现文件没问题,只有当我重新启动时它才找不到文件。