问题标签 [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 - 如何强制 Gradle 使用 --module-path 而不是 -cp?
我有一个相对简单的模块化项目,我已经设置了我在文档以及不同答案或文章中找到的所有选项,例如如何强制 gradle 将依赖项添加到模块路径而不是eclipse中的类路径?和别的。
我收到一个未找到模块的异常:
我只在通过 gradle 的 application:run 任务运行我的应用程序时遇到此异常。当我在 IntelliJ 中运行它或使用 Badass JLink 插件生成的运行时映像时,一切运行正常。经过数小时的手动调试和构建命令行后,我能够弄清楚正确启动的程序与 gradle 所做的事情之间的区别在于,其他一切都使用 --module-path 选项启动程序,而 Gradle 坚持生成无论我在 build.gradle 文件中做什么,都遵循命令行:
我的 gradle 文件包含以下内容:
根文件:
客户项目(应用):
关于我如何(最终)告诉 gradle 使用 --module-path 而不是 -cp 的任何想法?!
java - 为什么即使 Windows 资源管理器显示它们存在 Java.exe 突然找不到文件/模块
我们遇到了一个奇怪的问题 - 有没有人看到类似的东西?
我们有一个 Java/JavaFX 桌面应用程序,它已经在 Windows 平台(Server 2012)上成功运行了将近一年。
最近,我们将应用程序移至不同的 Windows 平台(Server 2019,虚拟机)。
该应用程序安装在共享驱动器上,每天启动数次。它最初运行成功,但在一天中的某个时间点将不再启动。
命令行是:
java -p WolfToolkit.jar;WolfToolkit_mods -m com.mycompany.wolftoolkit/com.mycompany.start.StartGUI
WolfToolkit_mods 是一个文件夹,其中包含所需模块的 jar。出现启动错误时,Java.exe 报告找不到不同的所需模块。经过大量诊断测试后,即使 Windows 资源管理器显示正确的内容,Java.exe 似乎也无法检测到 WolfToolkit_mods 文件夹中的任何 jar 文件。
如果我将文件夹 WolfToolkit_mods 复制到 WolfToolkit_mods2 并将命令更改为
java -p WolfToolkit.jar;WolfToolkit_mods2...
然后应用程序正确启动。
如果我只将其中一个 jar 文件重新复制到 WolfToolkit_mods 并使用原始命令,则只有该文件可见。如果重新复制所有文件,则应用程序运行正常。
因此,这种行为就像 Java 突然将 WolfToolkit_mods 视为空的,并且仅在将每个 jar 文件复制回时才检测到它。同时 Windows 没有发现任何问题。我还应该提到,在极少数情况下,Java.exe 突然开始报告 WolfToolkit.jar 是“模块格式无法识别”。同样,重新复制文件可以解决问题。
关于这可能是什么或如何诊断的任何想法?谢谢。
Windows Server 2019 标准版 v10.0
JVM:OpenJDK 64 位服务器 v11.0.10+9
java - Java 模块和 JAR MANIFEST 类路径属性
我有一个 Java 8 应用程序,我正在努力转换为 Java 11,当然我是第一次使用模块系统。
我设置了我的应用程序 Maven 程序集配置,以便所有 JAR 文件都放在 bin 分发的 /lib 目录中。然后,maven-jar-plugin 使用所有 JAR 文件名设置 MANIFEST Class-Path 值。该应用程序以简单的方式运行java -jar /lib/application.jar
转到 Java 11,如果我继续以这种方式构建 bin 分发,我很想知道运行时如何解释 MANIFEST Class-Path 值?我通读了 JAR 规范(https://docs.oracle.com/en/java/javase/11/docs/specs/jar/jar.html),我认为我将其理解为:
- 任何模块化 JAR 文件(包含 module-info.class)都将被视为非模块化 JAR。
- 任何非模块化 JAR 文件(无 module-info.class)都将被视为非模块化 JAR。
- 由于一切都在类路径上,一切本质上都是一个未命名的模块
- 由于一切都在 Class-Path 上,因此模块系统在运行时基本上没有被使用
- 既然一切都在 Class-Path 上,那么应用程序本质上应该像运行 Java 8 一样运行吗?
如果我确实想改变这一点,我会开始将任何模块化 JAR 文件放在 --module-path 上,并将其他 JAR 文件保留在 Class-Path 上吗?
gradle - IntellijIDEA + Gradle + JavaFX:一个“运行配置”的 java.lang.ClassNotFoundException 而不是另一个
Intellij IDEA 让我因不良行为而发疯:
我有一个(基于 Gradle 的)项目,其中包含两个用 Java 编写的主要类,每个类都在自己的包中。
- 一种叫做“HelloFX”
- 一种叫做“ImageViewExample”
两者都使用 JavaFX,因此需要一些特殊的“运行配置”。
- 对于“HelloFX”
- 对于“ImageViewExample”
两种情况下的配置都是相同的(最好不必处理一组巴洛克式的复杂文本框,只需将所有内容都放在属性值文本描述中,也可以复制粘贴,但我离题了)
对于应用程序“HelloFX”,一切都运行良好,但对于应用程序“ImageViewExample”,消息是在模块“JavaFXTrial.main”中找不到“类'pack2.ImageViewExample'。
有些东西阻止了 Intellij IDEA(或者更确切地说,Gradle 运行时?)在一种情况下发现主类,但在另一种情况下则不然。
编译后,编译肯定工作得很好:
我也可以从命令行启动课程。
所以这适用于命令行和 Intellij IDEA:
但这只是调用另一个类的主体,在 Intellij IDEA 中不起作用:
肯定错过了什么,但是什么?
更新:
当右键单击“Run ImageViewExample.main()”(我认为这意味着“通过 Gradle 插件运行”)(“Run HelloFX.main()”导致成功)时,会收到以下消息:
这与“找不到类”不太一样。
运行“with info”然后显示Gradle插件运行以启动“ImageViewExample”的命令行将Gradle缓存的所有JavaFX jar放在CLASSPATH而不是模块路径上,这显然失败了
这可能与它有关......
更新:但可能不是。
右键单击运行只是拼凑一个运行配置,这显然是错误的......但至少找到了主类。
更新更新
通过添加模块路径来修复 Intellij IDEA 创建的运行配置使“运行配置”工作,尽管“运行配置”和新的(现在工作的)“运行配置”在表面上看起来完全一样。
更新^3
即使在查看.idea/workspace.xml
项目时,工作和非工作运行配置也是相同的......除了非工作配置没有被标记为临时
此设置中有太多移动部件。不喜欢。
java - 无法编译和运行类路径 Java 应用程序
在部署 Java 时,我在理解如何管理文件夹和包名称时遇到了严重的问题。我有这个小程序,构造如下:
所以,我的意图是有两个包:com.myname.appname.data 和com.myname.appname.main,如果我错了,请纠正我,我选择这个布局以便能够创建两个模块来设置以模块化方式应用程序。
我使用deployer-classpath.bat编译(旧式编译):
好吧,这是输出:
如果我使用deployer_modulepath.bat将其作为模块化应用程序运行,结果相同:
java - NoClassDefFoundError 即使 jar 在模块路径 Eclipse 中
我正在开发一个香草 Eclipse 项目并试图避免使用 Maven。
我已将 Jackson 模块作为外部 jar 添加到模块路径中。当我这样做时,导入语句不再显示错误,但是当我运行我的程序时,我收到以下错误
线程“main”中的异常 java.lang.NoClassDefFoundError: com/fasterxml/jackson/databind/ObjectMapper at bitcoin.PriceConverter.getJsonFromUrl(PriceConverter.java:48) at bitcoin.PriceConverter.main(PriceConverter.java:26) 原因: java.lang.ClassNotFoundException: com.fasterxml.jackson.databind.ObjectMapper 在 java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:602) 在 java.base/jdk.internal.loader.ClassLoaders$AppClassLoader .loadClass(ClassLoaders.java:178) 在 java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521) ... 2 更多
PriceConverter 中的第 48 行是 ObjectMapper objMapper = new ObjectMapper();
我已经广泛搜索并发现我的类路径可能已损坏,但是所有答案都来自过时的 Eclipse 版本,我无法弄清楚如何解决这个问题。
我用 Gson 尝试了同样的事情并且遇到了同样的问题,但是昨天我添加了 json-20210307.jar 并且它工作正常。
谁能解释这里发生了什么并指导我如何解决它?
next.js - 将 Next.js 应用程序中的 Pages 文件夹移动到 src 文件夹
在create-next-app
Next.js 应用程序中,我想将pages
根目录中的文件夹移动到一个src
文件夹中。我添加了jsconfig.json
代码(如下),但是现在我收到错误消息“404 | 找不到此页面。” 任何人有任何见解?(对不起,Web 开发的初学者)
jvm - Launch4j 中的 JVM 参数
我正在通过launch4j 打包一个.jar 文件,并通过JVM 参数部分将一些参数传递给它。如果--module-path
参数包含相对于我的计算机的路径,在另一台设备上使用时会中断吗?我正在使用下面列出的参数。
--module-path /users/home/javafx-sdk-11.0.2/lib --add-modules javafx.controls,javafx.fxml
另外,我是否将库打包或提取到 jar 中是否重要?还是应该将它们复制到另一个文件夹中?图书馆处理
java - 为 Java 定制 --module-path
我通过 ArchLinux 上的 IDE IntelliJ IDEA 创建了一个 javafx 应用程序。现在,我想在没有任何 IDE 的情况下启动这个程序,所以我创建了一个 .jar 文件。尝试使用 java -jar myprogram.jar 启动程序时,我收到错误消息,即缺少 javafx 的运行时组件。很好 - 我将使用 --module-path 选项添加这些,它会运行。
但是,这个 --module-path 东西只有在我将模块路径设置在 /lib/...并在那里设置模块路径,找不到模块。
我的问题是我想在一个文件夹中“自包含”所有可能的内容,这样我就可以在安装了 JVM 的另一台机器上复制和粘贴所有内容并运行它,并且不想依赖于特定路径javafx 模块已安装。也许除了自定义 --module-path 之外还有另一种方法?
有什么帮助吗?谢谢 :-)
java-9 - 使 java.sql 包或模块可用于引导类加载器
我正在使用 sql 语句包装器。尝试使用 jdk 11 时,我收到 java.lang.NoClassDefFoundError: java/sql/PreparedStatement。从 java 9 开始,java.sql 在平台加载器中加载。我的包装类在引导类路径中。如何使任何模块在引导类路径中可用。
我试过 --add-modules java.sql 没用。有什么建议么