使用Eclipse编写Java9模块hello world

2019-07-04 00:00:00 eclipse 模块 编写

本文记录用eclipse开发最简单的Java9模块的过程。

Java9模块的其他详细信息后续再写。

完成后的工程结构如下:

《使用Eclipse编写Java9模块hello world》

编写提供方

我们将创建名为com.example.hello的模块。

新建java工程hello-module,注意选择Java版本为java9。

《使用Eclipse编写Java9模块hello world》
《使用Eclipse编写Java9模块hello world》

创建模块文件夹,根据非强制的约定,模块文件夹的名称和模块的名称相同。因为需要编译模块,所以可以直接将模块文件夹创建为Eclipse的source folder。

《使用Eclipse编写Java9模块hello world》
《使用Eclipse编写Java9模块hello world》

《使用Eclipse编写Java9模块hello world》
《使用Eclipse编写Java9模块hello world》

创建模块描述文件module-info.java,低版本的Eclipse会认为module-info.java不是合法的java文件名,所以此处直接创建module-info.java的普通File。

《使用Eclipse编写Java9模块hello world》
《使用Eclipse编写Java9模块hello world》

《使用Eclipse编写Java9模块hello world》
《使用Eclipse编写Java9模块hello world》

在module-info.java中,我们将模块暴露出去。如下:

module com.example.hello {
	exports com.example.hello;
}

编写类HelloModule,里面只有一个main方法,提供给外部调用。如下:

public class HelloModule {
	public static void main(String[] args) {
		Class<HelloModule> clazz = HelloModule.class;
		Module module = clazz.getModule();
		String moduleName = module.getName();
		System.out.println("Hello from module: "+moduleName);
	}
}

这里使用了Java9中新增加的Module类,获取到模块的名称并输出。

编写调用方

我们将创建com.example.requirer的模块,此模块依赖了模块com.example.hello。

创建Java工程hello-requirer,注意选择Java版本为java9。

使用创建com.example.hello模块类似的方式,创建source folder。

编写module-info.java,指定依赖。如下:

module com.example.requirer {
	requires com.example.hello;
}

此时Eclipse编译会抛出异常,因为找不到名为com.example.hello的模块。

《使用Eclipse编写Java9模块hello world》

Eclipse中可以通过添加module path解决。

打开工程hello-requirer的properties界面

《使用Eclipse编写Java9模块hello world》

在Java Build Path处,添加module path为工程hello-module

《使用Eclipse编写Java9模块hello world》
《使用Eclipse编写Java9模块hello world》

调用com.example.hello模块中方法,如下:

public class RequirerMain {
	public static void main(String[] args) {
		HelloModule.main(args);
		System.out.println("Requirer main finished.");
	}
}

运行输出如下:

Hello from module: com.example.hello

Requirer main finished.

完整代码:pkpk1234/java9-module-eclipse-demo

    原文作者:李佳明
    原文地址: https://zhuanlan.zhihu.com/p/30743052
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。

相关文章