首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

java 9:关于资源和模块的混乱规则

Java 9引入了模块系统,这是一个重要的变化,旨在提高Java应用程序的可维护性和安全性。在Java 9中,资源和模块的规则发生了一些混乱。

资源是指应用程序中的文件,例如配置文件、图像、音频文件等。模块是指将相关类和资源组织在一起的单元。

在Java 9之前,资源的访问是基于类路径的,即通过类路径中的目录和JAR文件来查找资源。但是,在Java 9中,模块系统引入了一种新的方式来管理和访问资源,即模块路径。

模块路径是一组模块的集合,它们按照依赖关系进行排序。模块路径中的每个模块都可以包含自己的资源。这意味着在Java 9中,资源的访问不再仅限于类路径,而是可以通过模块路径来查找。

然而,由于Java 9中资源和模块的规则变得更加复杂,可能会导致一些混乱。以下是一些可能导致混乱的规则:

  1. 模块路径和类路径的混合使用:在Java 9中,可以同时使用模块路径和类路径。这可能导致资源的查找顺序变得复杂,因为它们可以从不同的路径中加载。
  2. 模块之间的资源访问:在Java 9中,模块之间可以通过导出和开放指令来共享资源。这可能导致资源的可见性问题,因为某些资源可能只能在特定的模块中访问。
  3. 模块的版本冲突:在Java 9中,模块可以指定其所依赖的其他模块的版本。如果存在多个模块依赖于不同版本的同一个模块,可能会导致资源的版本冲突。

为了避免资源和模块的混乱,开发人员应该遵循以下几点:

  1. 熟悉模块系统:了解Java 9中模块系统的工作原理和规则,包括模块路径和类路径的区别,模块之间的依赖关系,以及资源的访问规则。
  2. 明确资源的位置:将资源放置在适当的模块中,并确保其他模块可以访问到这些资源。可以使用模块路径中的模块来组织和管理资源。
  3. 避免版本冲突:在定义模块的依赖关系时,确保所依赖的模块的版本是一致的,以避免资源的版本冲突。
  4. 使用合适的工具和框架:使用适当的工具和框架来简化模块系统的使用,例如Apache Maven或Gradle等构建工具,以及Spring Framework等开发框架。

腾讯云提供了一系列与Java开发和云计算相关的产品,例如云服务器、云数据库、云存储等。这些产品可以帮助开发人员在云环境中轻松部署和管理Java应用程序。您可以访问腾讯云官方网站(https://cloud.tencent.com/)了解更多关于这些产品的信息。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

优化Java代码 9 条简单规则

注意,这条规则有一个极端情况 - Java 静态导入中有一堆静态方法(List.of()、Set.of()、Map.of()),这会损害代码质量,使其模棱两可。...*;这会导入java.util包中所有类成员。虽然这样可以减少代码量,但可能会造成以下问题:命名冲突: 如果不小心引入了具有相同名称类或成员,可能会导致命名冲突,使得代码难以理解维护。...因此,推荐使用完全限定导入语句,这样可以:明确代码中使用成员来源。避免命名冲突意外行为。提高代码可读性可维护性。...import java.util.ArrayList;import java.util.List;这里导入语句完全限定了要导入类(ArrayListList),并且清晰地表明了代码中使用来源...它使客户端代码易于读取编写,并能够更流畅地使用具有默认值可选/参数。

8010

iptables规则备份恢复,firewalld9个zonezone操作,firewalld关于service操作

iptables规则备份恢复: iptables-save >/tmp/ipt.txt    备份规则到其他目录,名称为ipt.txt iptables-restor < /tmp/ipt.txt    ...恢复备份规则,如果默认里面没有规则那么可以恢复备份规则 firewalld9个zone: 开启防火墙: systemctl status firewalld查看firewalld状态,发现当前是dead...关于zone操作: firewall-cmd --zone=public --add-interface=lo 给指定网卡设置zone firewall-cmd --zone=dmz --remove-interface...=lo //针对网卡删除zone,删除后变成默认zone firewall-cmd --get-active-zones //查看系统所有网卡所在zone firewalld关于service操作.../etc/firewalld/zones/下,每次修改完配置文件,他都会把旧配置文件后缀名加上.old也保存在目录下 修改zoneservice有两种方法,一种是刚才我们写命令行,一种是直接修改配置文件

1.2K40
  • Java 9模块系统到底怎么用

    Java 模块Java 9中正式实装,一直没时间来研究一下这个东西,今天就和大家一起学习一下这个功能。 Java模块解决了什么问题 最近很多同学问我,胖哥,该怎么学习?该学习什么?...Java 9 引入模块是在Java包(package)基础上又引入一个新抽象层。基于package这一点很重要,这里需要强调一下。...最后在创建包下编写你Java类文件即可。 创建模块规则 创建模块也必须遵守下面的规则模块名称必须是唯一模块描述符文件module-info.java 必须有。 包名称必须是唯一。...系统模块 来自 JDK JRE 模块。可以使用 java --list-modules 列出,这里列出了一部分: ❯ ....开放反射 反射 API Java 9 封装安全性得到了改进。使用反射,我们甚至可以访问对象私有成员。 从 java 9 开始,默认情况下不打开。

    1.3K10

    JAVA9模块化详解(二)——模块使用

    JAVA9模块化详解(二)——模块使用 二、模块使用 各自模块可以在模块工件中定义,要么就是在编译期或者运行期嵌入环境中。...于是,上面的图中,com.foo.app模块读取com.foo.barjava.sql,但是不读取org.baz.qux,java.xmljava.logging。...举个例子,平台模块java.sql依赖java.loggingjava.xml模块,它不仅使用了那些模块类型实现了代码,并且还定义了那些模块类型。...现在com.foo.app模块可以读取java.xmljava.logging模块所有公共类型,虽然它声明中并没有提到那些模块。   ...至此,JAVA9模块化详解(二)——模块使用就先介绍到这里,这个系列还会继续,请大家多多支持,有不妥之处,还请大家多多交流。

    53220

    JAVA9模块化详解(二)——模块使用

    于是,上面的图中,com.foo.app模块读取com.foo.barjava.sql,但是不读取org.baz.qux,java.xmljava.logging。...举个例子,平台模块java.sql依赖java.loggingjava.xml模块,它不仅使用了那些模块类型实现了代码,并且还定义了那些模块类型。...exports javax.transaction.xa; } public修饰语意思是任何依赖了java.sql模块模块,不仅可以读取java.sql模块,还可以读取java.loggingjava.xml...如图: [image3] 现在com.foo.app模块可以读取java.xmljava.logging模块所有公共类型,虽然它声明中并没有提到那些模块。...至此,JAVA9模块化详解(二)——模块使用就先介绍到这里,这个系列还会继续,请大家多多支持,有不妥之处,还请大家多多交流。

    35620

    关于Java异常处理9条原则

    关于Java异常处理9条原则在Java编程中,合理有效地处理异常对于保证程序稳定性可维护性至关重要充分发挥异常优点,可以提高程序可读、可靠、可维护性本文基于Effective Java 异常章节总结...9条异常处理原则只针对异常情况才使用异常不要使用异常来做程序流程控制,只有针对异常情况才使用异常不主动判断数组下标是否越界,而使用异常控制流程反例: int[] ints = {1,...@throw要记录在哪种情况下可能抛出受检异常运行时异常在异常信息中保留关键信息异常中会存储字符串保留当时发生异常现场相关信息,这种信息对于我们排查是非常有利为了能够更容易保留这种关键信息,...、运行时异常(非受检异常)错误,通常只接触前两者,后者排查虚拟机错误时才接触对于运行恢复情况抛出受检异常,程序错误或不确定是否允许恢复情况抛出运行时异常受检异常必须进行处理,能够带来可靠,但太多会导致复杂...,难以排查最后(不要白嫖,一键三连求求拉~)本篇文章被收入专栏 Effective Java,感兴趣同学可以持续关注喔本篇文章笔记以及案例被收入 Gitee-CaiCaiJava、 Github-CaiCaiJava

    32031

    关于Java持久化相关资源汇集:Java Persistence API

    Java Persistence API: The Good, the Bad, and the Ugly Java Persistence API:好、坏一般功能 JPA:好与坏?...通常来说,这是一件好事,配置安全性、远程处理事务粒度应该比持久化数据粒度粗很多。JPA着重关注持久化数据,以及与EJB其他部分Java EE规范集成起来照管其他企业关注点。...此外,可以像在Java EE服务器中一样将JPA持久化单元部署到Spring,Spring对JPA规范中指出EntityManager注入查找服从容器规则。 问题:JPA是否支持JDK1.4?...JPA规范没有解决性能缓存,如OpenJPA 数据缓存 查询缓存。但是规范中规则对这类性能缓存暗示了某些行为约束。...WebLogic Server 10.0是完全支持EJB3规范第一款BEA产品。在WebLogic Server 9中可以通过BEA Kodo产品来使用JPA。 问题:关于JPA推荐教程是什么?

    2.5K30

    JAVA9模块化详解(一)——模块定义

    前言 java9已经出来有一段时间了,今天向大家介绍一下java9一个重要特性——模块化。...一个模块是一个被命名,代码和数据自描述集合。它代码有一系列包含类型包组成,例如:java接口。它数据包括资源文件(resources)一些其他静态信息。...指定变量集合将被标准化,但是其他工具框架也可以定义额外需要变量。没有标准化变量在模块系统中是没有效果。 1.4 平台模块 java9将使用模块化系统将平台分割成若干个子模块。...java9平台实现者可以包含其中所有模块,也可以是其中一些。 模块系统中明确知道模块是基础模块,它被命名为java.base。...至此,java9模块化先定义到这里,翻译不好,大家见谅,稍后会继续介绍java模块使用。

    53020

    JAVA9模块化详解(一)——模块定义

    JAVA9模块化详解 前言 java9已经出来有一段时间了,今天向大家介绍一下java9一个重要特性——模块化。...一个模块是一个被命名,代码和数据自描述集合。它代码有一系列包含类型包组成,例如:java接口。它数据包括资源文件(resources)一些其他静态信息。...指定变量集合将被标准化,但是其他工具框架也可以定义额外需要变量。没有标准化变量在模块系统中是没有效果。 1.4 平台模块 java9将使用模块化系统将平台分割成若干个子模块。...java9平台实现者可以包含其中所有模块,也可以是其中一些。   模块系统中明确知道模块是基础模块,它被命名为java.base。...至此,java9模块化先定义到这里,翻译不好,大家见谅,稍后会继续介绍java模块使用。

    88810

    linux学习第三十一篇:iptables规则备份恢复,firewalld9个zone,firewalld关于zone操作,firewalld关于service操作

    iptables规则备份恢复 保存备份iptables规则 service iptables save //会把规则保存到/etc/sysconfig/iptables 2.另一种方法就是把iptables...zone是firewalld默认单位,每个zone就好比一个规则集,就是zone里自带了一些规则9个zone: drop(丢弃):任何接收网络数据包都被丢弃,没有任何回复。...仅能有发送出去网络连接。 block(限制):任何接收网络连接都被IPv4icmp-host-prohibited信息IPv6icmp6-adm-prohibited信息所拒绝。...查看所有zone: firewall-cmd –get-zones 查看默认zone: firewall-cmd –get-default-zone firewalld关于zone操作 设定默认...: firewall-cmd –get-active-zones firewalld关于service操作 查看所有的servies: firewall-cmd –get-services

    716100

    关于gcc、glibcbinutils模块之间关系

    一、关于gcc、glibcbinutils模块之间关系 1、gcc(gnu collect compiler)是一组编译工具总称。...它主要完成工作任务是“预处理”“编译”,以及提供了与编译器紧密相关运行库支持,如libgcc_s.so、libstdc++.so等。...2、binutils提供了一系列用来创建、管理维护二进制目标文件工具程序,如汇编(as)、连接(ld)、静态库归档(ar)、反汇编(objdump)、elf结构分析工具(readelf)、无效调试信息符号工具...也即gettext实现 (9)io (10)linuxthreads (11)locale,本地化 (12)login,虚拟终端设备管理,及系统安全访问 (13)malloc,动态内存分配与管理...(14)nis (15)stdlib,其它基本功能 二、在现有系统上如何升级 1、升级这些库时,最好不要覆盖系统中缺省;因为这些库,尤其是glibc库,是系统中最核心共享库工具,如果盲目覆盖,很可能导致整个系统瘫痪

    2.6K91

    Java Python 关于 % 那些坑

    取余运算是很多语言都支持,比如说 C、C++、Java、Python 等,之前使用取余运算时候,大部分情况下除数被除数都是正整数,这时候呢, 运算很符合自己日常思维方式,但是碰到负数情况,...Java 取模操作 不知道你之前有没有注意过这个问题,看到 Java Python3 不同输出结果后,我是整个人都傻了。...然后我又去查了下 操作数学形式表达,就是 ,其中 是 整数商。 关于这个整数商,就有讲究了,因为是不能完全整除,因此就有一个是往0方向舍入,还是一个是往负无穷方向舍入。...而 C、C++、Java 运算采用就是往 0 逼近,也就是取余运算。...因为当除数被除数都是正整数时候,负无穷方向 0 方向是一致,所以二者没有差异,但是当被除数或者除数中有一个是负数或者二者都是负数时候,差异就会显现出来,大家在使用时候需要注意。

    47610

    关于Java正则转义中和理解

    \作为Java转义字符 1.在java字符常量中,反斜杠(\)是一个特殊字符,被称为转义字符,它作用是用来转义后面一个字符。...2.在java中以下字符都有特殊意义,无法直接表示 单引号:char c = 'a';   表示字符类型数据时需要使用单引号将字符左右括起来。...如\d表示数字字符匹配,等效于 [0-9]。\w表示匹配任何字类字符,包括下划线。与"[A-Za-z0-9_]"等效。...在 Java 中,\\ 表示:我要插入一个正则表达式反斜线,所以其后字符具有特殊意义。 \\中第一个\表示java转义字符\由编译器解析,第二个\是正则表达式\由正则表达式引擎解析。...Java正则表达式中匹配一个普通反斜杠是\\\\ 注意观察下图中静态代码中变量定义运行中内存变量之间区别。

    1.9K10

    关于Java并发编程总结思考

    Java语言从第一版本开始内置了对多线程支持,这一点在当年是非常了不起,但是当我们对并发编程有了更深刻认识更多实践后,实现并发编程就有了更多方案更好选择。...本文是对并发编程一点总结思考,同时也分享了Java 5以后版本中如何编写并发代码一点点经验。 为什么需要并发 并发其实是一种解耦合策略,它帮助我们把做什么(目标)什么时候做(时机)分开。...在Java最初版本中,就有一个叫Volatile关键字,它是一种简单同步处理机制,因为被volatile修饰变量遵循以下规则: 变量值在使用之前总会从主内存中再读取出来。...这里缓冲区或队列是临界资源。当缓冲区或队列放满时候,生产这会被阻塞;而缓冲区或队列为空时候,消费者会被阻塞。生产者消费者调度是通过二者相互交换信号完成。...读者-写者 当存在一个主要为读者提供信息共享资源,它偶尔会被写者更新,但是需要考虑系统吞吐量,又要防止饥饿陈旧资源得不到更新问题。

    49220

    关于JavaBIO,NIOAIO演进

    前言 Java里面的IO模型种类较多,主要包括BIO,NIOAIO,每个IO模型都有不一样地方,那么这些IO模型是如何演变呢,底层原理又是怎样呢? 本文我们就来聊聊。...NIO 由于BIO缺点,导致Java在JDK1.0至JDK3.0中,网络通信模块性能一直是短板,所以很多人更倾向于使用C/C++开发高性能服务端。...为了强化Java在服务端市场,终于在JSR-51也就是JDK4.0时候发布了Java NIO,可以支持非阻塞IO。并新增了java.nio包,提供很多异步开发API类库。...NIO与Netty 既然Java拥有了各种IO体系,那么为什么还会出现Netty这种框架呢? Netty出现主要原因,如下: (1)Java NIO类库API繁杂众多,使用麻烦。...里面IO模型演变发展,这也是Java在服务端领域大放异彩一个重要原因,了解这些知识之后,我们再去学习高性能Netty框架,将会更加容易。

    1K21
    领券