【发布时间】:2020-01-04 07:22:47
【问题描述】:
我最近安装了 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 上时提供的 cmets 表示它无法访问这些导入,例如
“类型 jdk.internal.org.jline.utils.Display 不可访问”
将鼠标悬停在该包上会使有关“快速修复”的 cmets 出现,这表明该包中缺少 Display 类。
然后我尝试做一些不同的事情。我删除了该项目,并在以下步骤中添加了名为 Classpath i.s.o 的“项目”。模块路径。 (教程告诉添加 org.eclipse.swt.{platform}.{os}。 {arch} 项目,但我不知道该怎么做。)我还添加了 main 方法,我之前忘记了。现在只有 4 个 x,我可以给出一个运行命令,除其他外,它会在控制台中产生以下输出:
启动层初始化时出错 java.lang.module.FindException:读取模块时出错:C:\Users\Frank Tavernier\Documents\School\eclipse-workspace\HelloWorldSWT\bin 引起 通过:java.lang.module.InvalidModuleDescriptorException: 在顶级目录中找到 HelloWorldSWT.class(未命名的包不是 允许在模块中)
此外,Eclipse 仍然对导入有同样的抱怨。
如何说服 Eclipse 运行该程序?
01/09/2019:编辑问题?这似乎是一种继续讨论的糟糕方式。就是这样:
感谢您的帮助。
我已经添加了一个 main 方法。
我的印象是 Eclipse 会告诉用户他需要导入哪些包。看来我误会了。
我导入了正确的包,但还是不行。
greg-449:“请注意,您必须在项目类路径中具有适当的 SWT jar。”
如何说服 Eclipse 把它放在那里?
在包资源管理器中有一个项目,其中包含一个名为 swt.jar 的项目。
Greg-449:“您似乎还创建了设置为使用模块的 Java 项目(Java 9 及更高版本中的新功能)。要不使用模块,请取消选择 New Java Project 向导第二页上的“create module-info.java”选项。”
我怎样才能到达那个页面?如果我在向导中输入我的项目名称,完成按钮仍然是灰色的。似乎需要一个不同的名称,这表明向导会创建一个新项目,并且这些设置不会影响我现有的项目。
我尝试用新获得的知识再次学习本教程。我没有它的链接。它带有 Eclipse。
在某一时刻,甚至在创建项目之前,教程说:“从主菜单通过文件 > 导入...打开导入向导,然后选择插件开发 > 插件和片段。点击下一步
。”
我没有这样做,因为我找不到“插件开发”。但是,本教程的这一步有一个“点击执行”链接,所以我点击了它。这会创建一个名为“出现问题”的对话框,并显示消息:“命令未成功完成”。详细信息:“未知向导:org.eclipse.pde.ui.PluginImportWizard。”
所以我跳过了这一步。
在新建 Java 项目中,我偏离了教程,取消了“创建 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();
}
}
当我运行程序时,它会打印在命令窗口中:
线程“main”java.lang.Error 中的异常:未解决的编译问题: 显示无法解析为类型 显示无法解析为类型 Shell 无法解析为类型 Shell 无法解析为类型
在 HelloWorldSWT.main(HelloWorldSWT.java:7)
【问题讨论】:
-
没有人知道如何使 Eclipse 教程正常工作吗?