我想在我的项目中使用java 9模块。我想将我的数据和服务类(名为com.test.base
的程序包)放在一个名为(Base)的模块中,并将其他类似于主类和GUI(名为com.test.main
的程序包)放在另一个名为(Main)的模块中。如何在java中声明模块9
- 如何声明简单模块(Base)?
- 如何用(Base)模块的依赖声明模块(Main)?
我也想使用(基地)模块与反思。
假设我的根包是
com.test
那么我应该在这些模块中使用什么目录结构?
我想在我的项目中使用java 9模块。我想将我的数据和服务类(名为com.test.base
的程序包)放在一个名为(Base)的模块中,并将其他类似于主类和GUI(名为com.test.main
的程序包)放在另一个名为(Main)的模块中。如何在java中声明模块9
我也想使用(基地)模块与反思。
假设我的根包是com.test
那么我应该在这些模块中使用什么目录结构?
该jigsaw quick-start是一个很好的开始与这帮助你。回答具体问题:
如何声明简单模块(Base)?
module base { exports com.test.base; }
这导出
com.test.base
包:
与定义com.test.base
目录中创建一个名为module-info.java
类。
如何申报与(基地)模块的依赖性模块(主)?
同其他模块base
一个com.test.main
目录中名为module-info.java
与定义类:
module main {
requires com.test.base;
}
利用导出的包。
我也想用(基地)模块与反思。
取决于夜使用,如果API OS去除或改变上市here,那么你可以使用--add-exports
java选项作为JEP-261
我还建议阅读Nicolai's answer到How to solve InaccessibleObjectException ("Unable to make {member} accessible: module {A} does not 'opens {package}' to {B}") on Java 9?一个不错的详细介绍有关如何在Java-9中使用反射的说明。
正确的解决方法是启动JVM如下:
--add-opens has the following syntax: {A}/{package}={B} java --add-opens java.base/java.lang=ALL-UNNAMED
如果反射代码是一个名为模块中,所有命名的可以通过它的名称所取代。
假设我的根包com.test所以应该 我使用的目录结构为这些模块?
你的目录结构应该是有点像:
src/main/java
- com.test
- base
- module-info.java
- com/test/base/Main.java
- main
- module-info.java
- com/test/main/SimpleClass.java
你**阅读文件**?如果是这样,哪个部分让你感到困惑?如果不是,为什么不呢? StackOverflow不是教学网站。 – Andreas