gpt4 book ai didi

java - 在 Java 15 模块化设置中的 Eclipse 中使用 SWT

转载 作者:行者123 更新时间:2023-12-04 17:22:14 24 4
gpt4 key购买 nike

我只是想让基本的 Hello World(项目 Trial0)应用程序运行,使用:

  • Eclipse 版本:2020-12 (4.18.0)
  • 使用 SWT 4.18(Linux、GTK)
  • Java 编译器设置为 15

遵循 Developing SWT applications using Eclipse 中的(有点古老,它是关于 JDK 1.4 和 SWT 3.1)的描述,我已经将 SWT 项目导入到 Eclipse 中:

  1. 转到 https://download.eclipse.org/eclipse/downloads/index.html#Stable_Builds
  2. 点击“4.18”到达https://download.eclipse.org/eclipse/downloads/drops4/R-4.18-202012021800/
  3. 向下滚动直到到达“SWT Binary and Source”并下载 zip swt-4.18-gtk-linux-x86_64.zip .
  4. zip 包含“swt.jar”(其中包含“.so”文件)。启动 Eclipse 的“File > Import > General > Existing Projects into Workspace”,选择上面的 zip 作为“Archive File”

我立即在一个使用导入的 SWT 项目的项目中遇到了模块化/拼图问题。编译器显然不允许看到未模块化的 SWT 类:

"The package org.eclipse.swt.widgets is not accessible"

在这段代码中:

package trial;

import org.eclipse.swt.widgets.*; // "The package org.eclipse.swt.widgets is not accessible"

public class MyApp {

}

这是项目:

The package org.eclipse.swt.widgets is not accessible

注意导入项目中的 module-info.java 文件。它包含:

module trial0 {
requires java.desktop;
}

swt.jar 确实没有发布模块:

$ jar --file=swt.jar --describe-module
No module descriptor found. Derived automatic module.

swt automatic
requires java.base mandated
contains org.eclipse.swt
contains org.eclipse.swt.accessibility
contains org.eclipse.swt.awt
contains org.eclipse.swt.browser
contains org.eclipse.swt.custom
contains org.eclipse.swt.dnd
contains org.eclipse.swt.events
contains org.eclipse.swt.graphics
contains org.eclipse.swt.internal
contains org.eclipse.swt.internal.accessibility.gtk
contains org.eclipse.swt.internal.cairo
contains org.eclipse.swt.internal.dnd.gtk
contains org.eclipse.swt.internal.gtk
contains org.eclipse.swt.internal.image
contains org.eclipse.swt.internal.opengl.glx
contains org.eclipse.swt.internal.webkit
contains org.eclipse.swt.layout
contains org.eclipse.swt.opengl
contains org.eclipse.swt.printing
contains org.eclipse.swt.program
contains org.eclipse.swt.widgets

我需要将 module-info.java 文件添加到 SWT jar 中吗?是否有另一种“规范”方式将 SWT jar 拉入模块化领域?

最佳答案

根据输出 describing the module from the jar 可以看到文件。

在您的 module-info.java 文件中,您应添加以下指令:

requires swt;

这将为您提供对模块 swt(自动模块名称)声明的包 org.eclipse.swt.widgets 的访问

contains org.eclipse.swt.widgets

在其描述中。

导入项目的文件 module-info.java 现在包含:

module trial0 {
requires java.desktop;
requires swt;
}

Eclipse 将此警告附加到 requires swt; 行:

Name of automatic module 'swt' is unstable, it is derived from themodule's file name.

没关系。

以上可能还是不行。在这种情况下,请验证以下内容:

项目 org.eclipse.swt 在导入项目的 Modulepath 上,而不是 Classpath:

The importing project's module path must look like this

导入的模块需要有访问规则。以下访问规则似乎有效:

Access rule set up in the importing project

请注意,导入项目的“模块依赖项”中没有具体定义:

Trial 0 Module Dependencies

关于java - 在 Java 15 模块化设置中的 Eclipse 中使用 SWT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65539331/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com