java 应用程序不适用于 java9 和 eclipse

标签 java eclipse java-9 eclipse-oxygen java-module

我正在尝试按照下面给出的步骤创建 Java9 的 HelloWorld 模块。

  1. 文件>新建>Java 项目 com.hello project description

  2. 右键单击项目(即 com.hello)>新建>源文件夹>输入源文件夹名称(即com.hello)

  3. 右键单击源文件夹(即 com.hello)>新建>包>输入名称(与源文件夹名称相同,即 com.hello)
  4. 右击Source Folder(即com.hello)>New>File>输入文件名(模块的java9标准文件名是module-info.java)

    module com.hello {
            exports com.hello;
    }
    
  5. 右键单击 Package(即 com.hello)>New>输入类名(即 HelloWorld)

    package com.hello;
    
    public class HelloWorld {
    
            public static void main(String[] args) {
                    System.out.println("Hello World");
            }
    
    }
    

右键单击 HelloWorld>Run As>Java Application 它抛出

Error occurred during initialization of boot layer

java.lang.module.FindException: Module com.hello not found

我的项目目录结构 project directory image

PS:尝试后this solution我的项目结构如下所示

solution project structure

注意:我还注意到一件事。保存更改后。 eclipse (氧气)抛出

Errors occurred during the build. Errors running builder 'Java Builder' on project 'com.hello'. Unknown constant pool type 19

最佳答案

假设您正在使用 Eclipse Oxygen.1a (4.7.1a) Release 2017年10月11日发布 支持JPMS和Junit5 你可以适配如下-

当您创建一个新的 Java 项目时,您需要确保您的 com.hello 包和 module-info.java 位于 src 项目的文件夹。您可以在您的项目中移动它们以遵循完整的树形结构,如下所示:-

com.hello[project]
|
|-src
|  |
|  |-- com.hello[package]
|  |   |
|  |   |- HelloWorld.java [your class]
|  | 
|  |--module-info.java

注意:- 如果您尝试创建基于 Maven 的项目(pom.xml 在您的结构中可见),您可能想关注 Maven in Eclipse: step by step installation 的答案.

关于java 应用程序不适用于 java9 和 eclipse,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46741683/

相关文章:

java - Android Java 倒计时然后做某事

java - 如何在Java中自动加载具有@ManyToMany关系的实体

eclipse - 带插件的可移植 Eclipse Juno

spring - 带有 Java9 的 Swagger UI(spring boot 2.0)

java - 为什么我的 Java 9 模块服务没有注册其实现?

java - java中的字符串到字符数组

java - 如何有效改变WebDriver对象的浏览器名称?

android - 从多个类文件运行 junit 测试用例 (Robotium)

java - 如何通过 Eclipse 快捷方式 (ctrl + alt + R) 仅显示 (src) 文件而不显示 (target) 文件?

Java 8 Stream API——用 Java 8 重写的 Java 9 Collectors.flatMapping