新创建的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,以及我能够发现的大多数其他刷新技巧。
1条答案
按热度按时间fruv7luv1#
请确保安装了最新版本的Extension Pack for JavaPreview和Gradle for Java扩展。您可以通过执行
gradle clean build
命令来清理和构建项目。此外,还要验证项目的Java源文件和模块定义文件是否正确。