JDK9(可能)将引入一个模块系统。作为其中的一部分,Java类库将模块化。
这可能导致在找不到类时出现异常,因为它们位于尚未指定为依赖项的模块中。
模块系统将创建哪些模块,它们各自的内容是什么?
或者换一种说法:给定一个未加载的类,如何找到合适的模块作为依赖项包含?
此处提供了完整的模块列表。http://cr.openjdk.java.net/~mr/jigsaw/ea/模块摘要。html
它列出了构成Java类库的73个模块。对于每一个,都有一个包含的包列表和它所依赖的其他模块列表。
给定一个未加载的类,可以在该站点上搜索包名的开头,以确定要依赖的模块。
如何找到作为依赖项包含的适当模块?
考虑这个恶作剧类:
import java.sql.DriverManager;
import java.rmi.RemoteException;
public class UserDao {
DriverManager driverManager = null;
public void service() throws RemoteException {
if (true) {
throw new RemoteException();
}
}
}
让我们假设这个类被编译成user-dao.jar
。jdeps工具就是答案(使用9ea170):
jdeps --list-deps user-dao.jar
java.base
java.rmi
java.sql
(请注意,jdep
随JDK 8提供,但在JDK 9中更合适。)
为了完整起见,如果您知道代码使用了一个特定的类(例如java.sql.DriverManager
),并且您怀疑需要一个模块(例如java.sql
),您可以通过文档确认该模块,或者在命令行上(同样是9ea170):
bash$ java --describe-module java.sql
java.sql@9-ea
exports java.sql
exports javax.sql
exports javax.transaction.xa
requires java.xml transitive
requires java.base mandated
requires java.logging transitive
uses java.sql.Driver
问题内容: JDK9将(可能)引入一个模块系统。作为其一部分,Java类库将被模块化。 当找不到类时,这会导致异常,因为它们位于尚未指定为依赖项的模块中。 用模块系统将创建哪些模块,它们各自的内容是什么? 或换句话说:给定一个未加载的类,如何找到合适的模块作为依赖项包含? 问题答案: 如何找到合适的模块作为依赖项? 考虑这个欺骗类: 假设将该类编译为。答案是jdeps工具(使用9ea170): (
另一个类比了解Angular 2模块的是类。 在类中,我们可以定义公共或私有方法。 公共方法是我们代码的其他部分可以用来与之交互的API,而私有方法是隐藏的实现细节。 以相同的方式,模块可以导出或隐藏组件,指令,管道和服务。 导出的元素可被其他模块使用,而未导出(隐藏)的元素只是在模块本身内部使用,并且不能被我们的应用程序的其他模块直接访问。 模块的基本使用 为了能够定义模块,我们必须使用装饰器
问题内容: 我有一个简单的节点应用程序,它对github上另一个应用程序具有单一依赖性。使用可以很好地安装依赖项,但是当我尝试在其中安装某些东西时,它说不可用。例如,github应用程序将Mongoose安装为依赖项。我认为该父应用程序可以访问该模块,因为它位于子模块中: 结构看起来像这样: 我是否只需要在父级应用程序中同时包含猫鼬作为依赖项,还是可以通过子级方式访问该模块? 问题答案: 我是否只
Velocity 不依赖 jQuery Velocity.js 可以在不引入 jQuery 的情况下单独使用。如果 你需要大部分动画效果能兼容 IE8,就必须引入 jQuery 1×。 它也可以和 Zepto 一起使用,写法和 jQuery 一样: // 无 jQuery 或 Zepto 时,Velocity()方法挂载在 window 对象上 (window.velocity) // ( 第一
Python 提供了强大的 模块支持,主要体现在,不仅 Python 标准库中包含了大量的模块(称为标准模块),还有大量的第三方模块,开发者自己也可以开发自定义模块。通过这些强大的模块可以极大地提高开发者的开发效率。 那么,模块到底指的是什么呢?模块,英文为 Modules,至于模块到底是什么,可以用一句话总结: 模块就是 Python 程序。换句话说,任何 Python 程序都可以作为模块,包
我用 上面写着 我知道是,因为它抱怨包不存在。我应该在哪里添加依赖项,以便我的代码能够成功地编译和调谐?