gpt4 book ai didi

java - Eclipse HelloWorldSWT 教程 : cannot access import packages

转载 作者:行者123 更新时间:2023-12-02 01:05:28 26 4
gpt4 key购买 nike

我最近安装了 Eclipse 以用于在线 Java 类(class),并且正在尝试这些教程。

Hello World 教程不起作用,但我能够在 Stack Overflow 上的帮助下运行程序

Hello World SWT 教程也不起作用。我能够大致按照说明进行操作,但我不知道如何运行该程序,我怀疑是因为它无法编译。

代码如下:

import jdk.internal.org.jline.utils.Display;

import jdk.nashorn.tools.Shell;

public class HelloWorldSWT {

Display display = new Display();

Shell shell = new Shell(display);

shell.setText("Hello World!");

shell.open();

while(!shell.isDisposed()) {

if (!display.readAndDispatch()) display.sleep();
}
display.dispose();
}

在大多数行的左侧,Eclipse 显示一个红色的 x,我怀疑它表示编译错误。悬停在顶部 x 上时提供的注释表明它无法访问这些导入,例如

“The type jdk.internal.org.jline.utils.Display is not accessible”



将鼠标悬停在该包上会出现有关“快速修复”的注释,这表明该包中缺少 Display 类。

然后我尝试做一些不同的事情。我删除了该项目,并在以下步骤中添加了名为 Classpath i.s.o 的“项目”。模块路径。 (教程告诉添加 org.eclipse.swt.{platform}.{os}。
{arch} 项目,但我不知道该怎么做。)我还添加了 main 方法,我之前忘记了。现在只有 4 个 x,我可以给出一个运行命令,除其他外,它会在控制台中产生以下输出:

Error occurred during initialization of boot layer java.lang.module.FindException: Error reading module: C:\Users\Frank Tavernier\Documents\School\eclipse-workspace\HelloWorldSWT\bin Caused by: java.lang.module.InvalidModuleDescriptorException: HelloWorldSWT.class found in top-level directory (unnamed package not allowed in module)



此外,Eclipse 仍然对导入有同样的提示。

如何说服 Eclipse 运行该程序?

2019 年 1 月 9 日:编辑问题?这似乎是一种继续讨论的糟糕方式。就这样:

感谢您的帮助。

我已经添加了一个主要方法。

我的印象是 Eclipse 会告诉用户他需要导入哪些包。显然我误会了。

我导入了正确的包,但它仍然不起作用。

greg-449 :“请注意,您必须在项目类路径中具有适当的 SWT jar。”
如何说服 Eclipse 把它放在那里?
在包资源管理器中有一个项目,其中包含名为 swt.jar 的内容。

Greg-449:“您似乎还创建了设置为使用模块的 Java 项目(Java 9 及更高版本中的新功能)。要不使用模块,请取消选择 New Java Project 向导第二页上的“create module-info.java”选项。”
我怎样才能到达那个页面?如果我在向导中输入我的项目名称,完成按钮仍然是灰色的。似乎需要一个不同的名称,这表明向导创建了一个新项目,并且这些设置不会影响我现有的项目。

我尝试使用新获得的知识再次遵循本教程。我没有它的链接。它与 Eclipse 一起提供。

有一次,甚至在创建项目之前,教程说:“从主菜单中通过 File > Import... 打开 Import 向导,然后选择 Plug-in Development > Plug-ins and Fragments。点击下一步
。”
我没有这样做,因为我找不到“插件开发”。但是,本教程的这一步有一个“点击执行”链接,所以我点击了它。这会创建一个名为“出现问题”的对话框,并显示消息:“命令未成功完成”。详细信息:“未知向导:org.eclipse.pde.ui.PluginImportWizard。”
所以我跳过了这一步。

在 New Java Project 中,我偏离了教程以取消选择“创建 module-info.java 文件”。

该教程还说:“由于我们的项目需要 SWT,我们需要在项目属性中指定它。”
我不知道该怎么做,所以我跳过了这一步。

我粘贴了代码,导入了正确的包 i.s.o。 Eclipse 建议的那些。 Eclipse 找不到那些“正确”的包。 (它可以在之前(在原始项目中)找到它们,但是创建这个新项目由于某种原因改变了它。)

代码是:
导入 org.eclipse.swt.widgets.Display;
导入 org.eclipse.swt.widgets.Shell;
public class HelloWorldSWT {
public static void main(String[] args) {
Display display = new Display();
Shell shell = new Shell(display);
shell.setText("Hello world!");
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) display.sleep();
}
display.dispose();
}
}

当我运行程序时,它会打印在命令窗口中:

Exception in thread "main" java.lang.Error: Unresolved compilation problems: Display cannot be resolved to a type Display cannot be resolved to a type Shell cannot be resolved to a type Shell cannot be resolved to a type

at HelloWorldSWT.main(HelloWorldSWT.java:7)

最佳答案

您正在导入错误的类。 SWT 类都有 org.eclipse.swt作为包名的第一部分。
Displayorg.eclipse.swt.widgets.DisplayShellorg.eclipse.swt.widgets.Shell .

请注意,项目类路径中必须有适当的 SWT jar。

您还尝试在方法之外的类中使用代码。 Java 代码必须在方法中。就像是:

import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;

public class HellowWorldSWT
{
public static void main(final String [] args)
{
Display display = new Display();

Shell shell = new Shell(display);

shell.setText("Hello World!");

shell.open();

while (!shell.isDisposed())
{

if (!display.readAndDispatch())
display.sleep();

}

display.dispose();
}
}

您似乎还创建了设置为使用模块的 Java 项目(Java 9 及更高版本中的新功能)。要不使用模块,请取消选择 New Java Project 向导第二页上的“create module-info.java”选项。

关于java - Eclipse HelloWorldSWT 教程 : cannot access import packages,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57736894/

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