Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Eclipse HelloWorldSWT教程:无法访问导入包_Java_Eclipse_Import - Fatal编程技术网

Java Eclipse HelloWorldSWT教程:无法访问导入包

Java Eclipse HelloWorldSWT教程:无法访问导入包,java,eclipse,import,Java,Eclipse,Import,我最近安装了Eclipse以用于在线Java课程,并正在试用这些教程 Hello World教程不起作用,但我能够在Stack Overflow上找到的帮助下使程序运行 Hello World SWT教程也不起作用。我能够大致按照指令操作,但我不知道如何运行该程序,我怀疑是因为它无法编译 代码如下: import jdk.internal.org.jline.utils.Display; import jdk.nashorn.tools.Shell; public class HelloWo

我最近安装了Eclipse以用于在线Java课程,并正在试用这些教程

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上时提供的注释表明它无法访问这些导入,例如

“无法访问jdk.internal.org.jline.utils.Display类型”

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

然后我试着做一些不同的事情。我删除了该项目,并在以下步骤中添加了名为Classpath I.s.o.Modulepath的“项目”。(教程告诉我们添加org.eclipse.swt.{platform}.{os}。 {arch}项目,但我不知道如何做。)我还添加了main方法,这是我以前忘记的。现在只有4个x,我可以给出一个run命令,其中包括在控制台中生成以下输出:

启动层初始化期间出错 java.lang.module.FindException:读取模块时出错:C:\Users\Frank Tavernier\Documents\School\eclipse workspace\HelloWorldSWT\bin 收件人:java.lang.module.InvalidModuleDescriptorException: 在顶级目录中找到HelloWorldSWT.class(未命名的包) (模块中允许)

此外,Eclipse对进口产品仍有同样的抱怨

我如何说服Eclipse运行该程序


2019年9月1日:编辑问题?这似乎是继续讨论的可怕方式。下面是:

谢谢你的帮助

我已经添加了一个main方法

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

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

greg-449:“请注意,您必须在项目类路径中具有适当的SWT jar。”
如何说服Eclipse将其放在那里? 在PackageExplorer中有一个项目,其中包含一个名为swt.jar的东西

Greg-449:“您似乎还创建了Java项目设置以使用模块(Java 9以后的新版本)。要不使用模块,请取消选择“新建Java项目向导”第二页上的“创建模块信息.Java”选项。”
我怎样才能到达那个页面?如果在向导中键入项目名称,则“完成”按钮将保持灰色。它似乎需要一个不同的名称,这表明向导创建了一个新项目,并且设置不会影响我现有的项目

我试着用新学到的知识再次学习教程。我没有它的链接。它与Eclipse一起出现

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

在新的Java项目中,我偏离了教程,取消选择了“createmodule-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();
    }
}
当我运行该程序时,它会打印在命令窗口中:

线程“main”java.lang中出现异常。错误:未解决的编译问题: 无法将显示解析为类型 无法将显示解析为类型 无法将Shell解析为类型 无法将Shell解析为类型

在HelloWorldSWT.main(HelloWorldSWT.java:7)


您正在导入错误的类。SWT类都将
org.eclipse.SWT
作为包名的第一部分

Display
org.eclipse.swt.widgets.Display
Shell
org.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项目设置(Java9以后的新版本)。要不使用模块,请取消选择“新建java项目向导”第二页上的“创建模块信息.java”选项。

我知道这是一篇老文章,我今天遇到了同样的问题。我只想在这里分享我的解决方案

首先,我的eclipse是Enterprise Java Developer,版本是2020-12(4.18.0)

当我学习教程时,在“右键单击Java编辑器并选择Source>OrganizeImports”之后,我的代码中添加了以下两行

import org.eclipse.swt.widgets.Shell;
import jdk.internal.org.jline.utils.Display;
解决办法是:

  • 将“import jdk.internal.org.jline.utils.Display”替换为“import org.eclipse.swt.widgets.Display”
  • 右键单击HellowWorldSWT项目,然后单击属性->Java构建