gradle Visual Studio代码具有新Java模块的类型不可访问错误

ni65a41a  于 2023-05-18  发布在  Java
关注(0)|答案(1)|浏览(124)

新创建的Java模块(也是Gradle项目中的项目)未列为“项目和外部依赖项”。Gradle项目构建并显示为运行命令行gradle构建(power shell,cygwin)。在Visual Studio Code中,依赖的Java项目显示“type is not accessible”消息。
问题代码位于https://github.com/pnambic/depanfx

  • 分支base:工作启动码
  • 分支leeca/workspace:从gradle工作,VSC抱怨不可访问的类型。

我使用Java和Gradle已经很多年了,我认为我已经习惯了Visual Studio Code。我安装了Java扩展包和Gradle for Java扩展。我是Java模块和Java FX的新手,但这感觉像是我对Gradle项目或Visual Studio Code的依赖关系构造的理解中的一个差距。
我开始将一个桌面应用程序移植到JavaFX中。初始应用程序结构的构建严格遵循JavaFX和Visual Studio Code for the Modular with Gradle结构中概述的步骤。代码具有相当常规的结构。

com.pnambic.depanfx.app
    DepanFxApp - main class, launches FX
    DepanFxController - menu controller

根据大纲,这个启动子项目定义了一个基本模块(“depanfx.app”),它需要一些javafx库。它看起来工作得很好,我还学了一些Java模块和JavaFX的知识。此版本的应用程序是当前的基分支。
下一步是添加一个新模块,这个模块用于工作空间模型。这个有更多的类,但是所有的东西都被塞进了几个包中。

com.pnambic.depanfx.workspace - visible types and factory
  com.pnambic.depanfx.workspace.basic - implementation model
  com.pnambic.depanfx.workspace.gui - visible types, open for reflection

新module-info.java组件的www.example.com文件允许JavaFX访问gui包,并且导出基本包和gui子包。

module depanfx.workspace {
    requires javafx.controls;
    requires javafx.fxml;

    opens com.pnambic.depanfx.workspace.gui to javafx.fxml;

    exports com.pnambic.depanfx.workspace;
    exports com.pnambic.depanfx.workspace.gui;
}

为了使用这个功能,除了对Java和FXML文件做了一些修改之外,DepanFX Java项目中还有两个更改。

  • 添加模块依赖项“”需要depanfx.workspace;“到DepanFxApp module-info.java文件
  • 将gradle依赖项“实现项目(':DepanFxWorkspace')添加到DepanFxApp构建.gradle文件

此代码可作为分支leeca/workspace使用。
我偶然发现的一个线索是VSC侧面板窗格中显示的依赖项的差异。
我可以在Gradle项目窗格中看到Gradle依赖项包括新模块
Gradle projects showing dependency
在JAVAPROJECTS窗格中,根本没有DepanFxWorkspace组件的证据。
Java projects showing no dependency
但是,无论工作区刷新或其他重置的数量如何,似乎都无法让VSC相信工作区模块中的组件在原始应用程序项目中是可见的。
我已经尝试了CleanJavaLanguageServerWorkspace,关闭并重新启动VSC,以及我能够发现的大多数其他刷新技巧。

fruv7luv

fruv7luv1#

请确保安装了最新版本的Extension Pack for JavaPreviewGradle for Java扩展。您可以通过执行gradle clean build命令来清理和构建项目。此外,还要验证项目的Java源文件和模块定义文件是否正确。

相关问题