使用 Java 11 在 Eclipse 中混合模块化和非模块化开发

2024-05-06

自从我从事 Java 编程以来已经有一段时间了,在项目拼图之后,我很惊讶地回到了 Java 编程,整个环境对我来说都是陌生的。

我在混合模块化和非模块化环境中使用 Eclipse(2018-09,4.9.0)标准 Java 项目时遇到问题。具体来说,我尝试使用 Eclipse 平台(没有 Gradle 或 Maven 的基础 Java 项目)组合 JavaFX 11(模块化)和 Apache POI 4.1(非模块化)。

在我的 module-info.java 中,我有以下内容,

module myapp {
        requires javafx.base;
        requires javafx.graphics;
        requires javafx.fxml;
        requires javafx.controls;
        requires javafx.web;

        exports myapp.gui;

        opens myapp.gui to javafx.fxml;
}

我发现只要有 Apache POI 代码,我就会在 Eclipse 中收到以下错误

The import cannot be resolved

使用为 Apache POI 创建的自动模块在 module-info.java 中添加以下内容,如下所示,

        requires poi;

在 Eclipse 中产生一条警告,指示自动模块不稳定,该模块似乎已被识别,但继续产生无法解决的错误。

我还尝试将主 POI jar 文件放在类路径中,而不是模块路径中,但没有效果。

涉及与 UI 分离的 Apache POI 的代码可以正常工作。我只需删除 module-info.java 的使用,我认为这会将项目置于某种没有模块化的遗留开发模式中?

有人可以告诉我我做错了什么,并指导我使用混合模块化和非模块化库设置一个项目吗?

提前致谢。


如果您有一个模块,您的代码将被封装在一个模块中module-info.java文件在默认包中。在模块内使用 JAR 的某些内容,

  • the JAR 必须位于模块路径 and
  • 该模块必须根据需要显式声明in the module-info.java: requires <module_name>;.

否则导入语句无法解决。上面没有任何项目类路径可从模块访问;上什么也没有模块路径没有requires ... in module-info.java可以在模块中使用。因此,就你而言,没有它就行不通requires poi;(并且没有 POI 库模块路径).

The “自动模块名称‘...’不稳定”警告只是一个提示,POI JAR 并未构建为模块,而是用作模块。实际上这意味着如果你重命名 JAR 文件,模块名称也会改变,你必须调整module-info.java文件。从技术上讲,POI JAR 既不包含module-info.class文件也不是META-INF/MANIFEST.MF文件与行Automatic-Module-Name: ...。所以模块名称poi源自 JAR 的文件名。这“自动模块名称‘...’不稳定”可以在以下位置关闭警告项目 > 属性:Java 编译器 > 错误/警告 in the Module部分。

总而言之,您没有混合的模块化和非模块化依赖关系。相反,旧版 JAR 通过从文件名派生模块名称来自动成为模块。在这种情况下,Eclipse 默认会警告您,只需更改该 JAR 的文件名即可破坏该应用程序。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Java 11 在 Eclipse 中混合模块化和非模块化开发 的相关文章

  • Maven 多模块项目结构问题

    自从过去几周构建我的 Maven 多模块项目以来 这是我的一次有趣的经历 当我决定使用 Maven 进行构建生命周期管理时 我有几个原因希望选择 Maven A 大多数开发团队都是分开的 这样每个团队都可以在项目中的单独模块上工作 例如团队
  • 如何在 Scala 中编写 Pig UDF

    我正在尝试在 Scala 中编写 Pig UDF 使用 Eclipse 我已将 pig jar 添加为 java 构建路径中的库 这似乎解决了以下 2 个导入问题 导入 org apache pig EvalFunc 导入 org apac
  • 未经编辑,无法在 pptx 中的 BarChart 中查看 Apache POI 更新的数据值

    我有一个 pptx 模板 它只有一张用于测试目的的幻灯片 该幻灯片有一个简单的条形图 我可以通过在 pptx 文件上双击条形图来编辑条形图 并且可以更改 Sheet1 条形图数据表 中的值 并且我可以立即在条形图中看到更改 现在 我尝试使用
  • 在 Eclipse 工作区中搜索字符串

    如何在完整的eclipse工作区中搜索字符串 我无法在 Eclipse 工作区中找到文本 但是我无法在工作区中找到指定的字符串 在顶层菜单中 选择 搜索 gt 文件搜索 然后在底部附近 在范围内 有一个选项可以选择整个工作区 为您 文件搜索
  • 从不同的插件执行现有插件的命令/处理程序

    我有一个 RCP 应用程序 其中包含现有命令和处理程序 可以通过编程方式切换视角 我还有现有 RCP 应用程序使用的新插件 我希望这个新插件执行我的 RCP 应用程序的命令 处理程序 可能的解决方案是什么 您可能需要为该命令定义一个处理程序
  • 如何在 Java/Eclipse 中使用特殊字符

    如何在 Java Eclipse 中使用 显示 或 等字符 当我尝试直接使用它们时 例如在源代码中 Eclipse无法保存文件 我能做些什么 编辑 如何找到 unicode 转义序列 问题是您使用的字符无法以文件设置的编码 Cp1252 表
  • 如何在Mac上使用eclipse安装jetty

    我是一个新手 jetty 和 RESTful API 我想使用 Jetty 创建 REST 服务 并希望将嵌入式 jetty 与 eclipse 一起使用 任何人都可以建议我在 Mac OS 中使用 Eclipse 安装 Jetty Jet
  • 无法在 Eclipse 中连接到虚拟机

    想要改进这篇文章吗 提供此问题的详细答案 包括引用和解释为什么你的答案是正确的 不够详细的答案可能会被编辑或删除 当我尝试在 Eclipse 上调试任何项目时 我突然开始遇到这个奇怪的错误 我不记得有什么改变让这个问题突然出现 Launch
  • Eclipse 快捷方式查找覆盖某个方法的所有子类

    Is there an Eclipse shortcut to see all class overriding the method m Highlight select put cursor on the method name and
  • Android:R 类停止生成

    我是 android 编程的新手 我正在做 Commsware 教程中的教程 确切地说是 T3 教程 期间我清理了项目 之后 R 类文件停止生成 我删除了该项目 看起来相同的错误正在传播到我正在创建的其他新项目 新创建的项目也会出现此错误
  • 在 Eclipse 中的调试会话期间记录所有跟踪信息

    我想记录调试会话的每个步骤的所有调试信息 以便稍后处理所有这些数据 例如调用的方法的名称 参数值 所有变量值等 有没有任何选项可以实现此目的 我应该在哪里更改代码才能实现此目的 一件重要的事情 它不是一个 java 程序 这是一个使用 ac
  • Mediaplayer 播放几次后停止播放

    我有一个按钮 按下它会播放一个随机声音剪辑 然后播放另一个声音剪辑 然后通过一个媒体播放器播放另一个声音剪辑 但是多次按下该按钮 15 20 次 后 所有音频都会停止 我在播放最后一个音频剪辑后释放媒体播放器 所以我不认为这是原因 有什么指
  • 在 Eclipse 插件中:如何以编程方式突出显示 java 编辑器中的代码行?

    我正在尝试开发一个 eclipse 插件 它对 java 代码进行一些文档检查 并在编辑器中突出显示一些代码行 为了实现我的目标 我不想在 eclipse 中创建新的编辑器 我只是想扩展默认的 java 编辑器以在不满足某些预定要求的方法下
  • java.lang.ClassNotFoundException:javax.mail.MessagingException

    我想使用 eclipse 将电子邮件从我的 gmail 帐户发送到另一个邮件帐户 我使用 apache tomcat 7 0 34 作为我的 Web 服务器 并使用端口 8080 作为 apache 服务器 HTTP 1 1 并使用 JRE
  • 适用于 C/C++ 和 Java 的 Eclipse IDE

    我正在尝试在运行 El Capitan 的 Mac 上设置 Java IDE 但是我找到的安装程序要求我为 C C 和 Java 安装单独的 IDE Eclipse Neon Eclipse 有什么选项可以让我拥有一个支持多种语言的 IDE
  • 生成 equals 和 hashcode 时忽略属性

    假设我有一个类 Customer public class Customer private String firstName private String lastName private String doNotAddMeToEqual
  • Java:同步标准输出和标准错误

    我有一个奇怪的问题 如果我能解决它就好了 出于调试目的 以及其他一些事情 我在标准输出上编写控制台 Java 应用程序的日志 有些内容写在标准输出上 有些内容 例如错误 打印在标准错误上 问题是这两者并不完全同步 因此打印行的顺序并不总是正
  • 启动 jboss 服务器时出错

    我刚刚完成重新安装我的操作系统 并像往常一样安装和测试我使用的标准工具 现在当我尝试从 eclipse 启动 Jboss 5 时 我遇到了这个前所未有的错误 这是一个很大的例外 3 53 10 693 ERROR AbstractKerne
  • Android ADT Eclipse 插件,parseSDKContent 失败

    我刚刚设置了我的第一个 Android 开发环境 其中包括 日食3 5 Mac OS X 10 5 适用于 x86 mac 的 Android SDK ADT Eclipse 插件 0 9 6 我已将 set PATH 设置为我的 SDK
  • 将过滤器添加到 Eclipse 中的 Project Explorer

    我想向 Project Explorer 添加一个新的过滤器 以向用户隐藏一些在 Eclipse RCP 应用程序中自动创建的项目 到目前为止我已经找到了两个扩展点 org eclipse ui ide resourceFilters 允许

随机推荐

  • AppCompatActivity 中的 setListAdapter

    我有一个具有功能的程序listArray with extends AppCompatActivity但我的代码有错误 my code 新闻活动 public class NewsActivity extends AppCompatActi
  • 如何判断“NSManagedObject”是否已被删除?

    我有一个NSManagedObject已被删除 并且包含该托管对象的上下文已被保存 我明白那个isDeleted回报YESif Core Data 将要求持久存储在下一次保存操作期间删除该对象 然而 由于保存已经发生 isDeleted回报
  • Mac OS Flutter 构建应用程序包失败:密钥库格式无效

    自从一周以来 我一直在尝试从 flutter 应用程序创建 android 应用程序包 并且我一直遵循创建上传密钥库 https flutter dev docs deployment android给定 flutter 官方网站 在 Ma
  • 将一行字段设置为其他 2 个字段的乘积

    我有一个这样的SQL表结构 Id A B C D 1 1 5 6 25 2 2 10 5 25 3 3 7 4 25 4 1 6 5 26 5 2 10 5 26 6 3 8 3 26 我想写一个脚本 它将更新所有B 和 C 列在行中A 3
  • 阿拉伯语查询字符串问题(???在值中)

    我在查询字符串中发送一个阿拉伯语值 当在服务器上检索它时 该值是错误的并被引号替换 例如 http server mypage aspx qs mortgage http server mypage aspx qs D9 85 D8 B1
  • 如何在GIT中检出单个文件

    我们开发了一个自动部署工具 用于在 jboss 服务器中部署文件 ear war 和 jar 开发人员将在 Visual Source 安全中签入文件 自动部署工具会自动一一检出开发者指定的最新文件 并使用API 将其部署到jboss服务器
  • 在 Python 中计算分布的对数似然

    有什么简单的方法计算任何分布的对数似然适合数据 OP 的解决方案 Python 有 82 个标准发行版 可以找到here https docs scipy org doc scipy reference stats html continu
  • 使用 libclang 从内存中的 C 代码生成程序集

    我需要实现一个使用 LLVM Clang 作为后端将 C 代码编译为 eBPF 字节码的库 代码将从内存中读取 我也需要在内存中获取生成的汇编代码 到目前为止 我已经能够使用以下代码编译为 LLVM IR include
  • 如何查看 docker build“RUN 命令”标准输出? (适用于 Windows 的 Docker)

    过去我可以简单地做这样的事情 Dockerfile FROM ubuntu RUN echo test 这会输出test到我的壳 我用它作为调试我的构建的一种方式 在 Windows 版 docker 的最新稳定版本中 构建输出看起来完全不
  • 数百个空闲线程的影响

    我正在考虑使用可能数百个线程来实现通过网络管理设备的任务 这是一个在带有 Linux 内核的 powerpc 处理器上运行的 C 应用程序 在每个任务进行同步以将数据从设备复制到任务的初始阶段之后 任务变得空闲 并且仅在收到警报或需要更改一
  • 使用终端将信息输入 Javascript

    我想获取 C 程序的输出并将其输入到 javascript 文件的标准输入中 但是我无法使用该方法将任何内容推送到标准输入中 node example js lt test txt 因为我收到以下错误 示例 js 35 stdin setR
  • Intellij Idea:导入Gradle项目-尚未定义JAVA_HOME

    Intellij 理念 14 1 4 Mac OS X Yosemite 10 10 3 及更高版本 从 IDE Import Project gt Chosen directory to import gt Import project
  • Mysql 选择 csv 字符串中的 where 字段

    我想从一个表中进行选择 其中的字段位于传递给存储过程的给定 csv 字符串中 最快的方法是什么 我应该将这些值插入临时表并加入其中吗 或者有没有办法用一个语句来做到这一点 Thanks 做了一些搜索并找到了一个很好的答案 使用MySql的字
  • 在 django 模板中显示字典键

    我想知道如何在 django 模板中显示字典键本身 字典示例 resources coin coin grain grain iron iron stone stone wood wood 模板 b Coin b upgrade coin
  • 自动 npm install --legacy-peer-deps 用于单个依赖项

    假设我有一个package json像这样 name my app version 0 1 0 dependencies aws sdk client s3 3 21 0 testing library react 11 2 5 axios
  • Swift UITextFieldShouldReturn 返回键点击

    iOS8 Xcode6 斯威夫特 使用 Swift 如何捕获 返回 按钮上的点击 以下链接中的文档指定使用textFieldShouldReturn方法 Swift optional func textFieldShouldReturn t
  • 如何在浏览模式下禁用 RStudio 中的查看模式

    Is there a way to disable the View mode in RStudio when debugging functions 代码示例 myfun lt function browser myfun 我知道它不开放
  • 将 NSDate 从一个时区更改为另一个时区 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 在 Clion 中更改 CMake 语法颜色

    我安装了 CLion 并自定义配置了深色主题 以便长时间盯着屏幕时眼睛更舒服 我能够更改 C 语法配置的每种颜色 但 CMake 的颜色选项不存在 并且 CMake 的默认颜色是非常深的橄榄色 需要我睁大眼睛才能阅读 CMake 以代码样式
  • 使用 Java 11 在 Eclipse 中混合模块化和非模块化开发

    自从我从事 Java 编程以来已经有一段时间了 在项目拼图之后 我很惊讶地回到了 Java 编程 整个环境对我来说都是陌生的 我在混合模块化和非模块化环境中使用 Eclipse 2018 09 4 9 0 标准 Java 项目时遇到问题 具