241得票4回答
什么是非法反射访问?

有很多关于Java 9中非法反射访问的问题。 我发现有很多关于绕过错误消息的讨论,但我想知道什么是非法反射访问。 所以我的问题是: 什么定义了非法反射访问,什么情况下会触发警告? 我已经知道这与Java 9引入的封装原则有关,但我找不到一个解释如何将其整合起来、什么会触发警告和在什么情况下会出...

216得票21回答
如何解决Java 9上的InaccessibleObjectException(“无法使{member}可访问:模块{A}未向{B}‘opens {package}’”)?

当在Java 9上运行应用程序时,这个异常会出现在各种不同的情况下。 某些库和框架(如Spring、Hibernate、JAXB)特别容易发生这种情况。 以下是来自Javassist的一个示例:java.lang.reflect.InaccessibleObjectException: Una...

107得票1回答
Java 9中--add-exports和--add-opens有什么区别?

Java 9 (jdk-9+170) 新增了模块系统,与所有之前的 Java 版本不同,默认情况下不允许应用程序查看 JDK 中的所有类。 为了解决这个问题,java 命令行提供了一个新的参数 --add-exports,允许如下打破封装: java -jar josm.jar --add...

103得票2回答
迁移到Java 9或更高版本时是否有必要切换到模块化?

我们目前正在从Java 8迁移到Java 11。然而,升级我们的服务比我们预期的要容易得多。我们基本上只需要在build.gradle文件中更改版本号,服务就可以愉快地运行起来了。我们还升级了使用这些库的(微)服务以及库本身。到目前为止没有出现任何问题。 那么,有没有实际的必要使用模块?在我看...

94得票3回答
OSGi、Java模块化和Jigsaw

截至昨天早上,我对OSGi是什么甚至一无所知。 OSGi只是我不断看到的一些流行语,所以最终我抽出一些时间来研究它。 实际上,它似乎是相当酷的东西,所以我首先要声明(为记录):我在任何方面都不反对OSGi,并且这不是一个“OSGi批判”的问题。 到最后,似乎OSGi基本上解决了有关Java...

87得票2回答
为什么Java 9引入了JMOD文件格式?

Java 9有三种打包编译代码的方式: JAR JMOD JIMAGE JIMAGE是为速度和空间优化而设计的,由JVM在运行时使用,因此引入JIMAGE是很有意义的。不能将JIMAGE文件发布到maven仓库或在编译或链接时使用。 文档声称JMOD可以存储本地代码和其他无法由JA...

82得票5回答
为什么需要项目Jigsaw / JPMS?

对我来说,Java的包管理系统一直都很简单和有效。JDK本身就大量使用它,我们一直在使用它来模拟命名空间和模块的概念。 Project Jigsaw(又称Java平台模块系统)试图填补什么空缺呢? 官方网站上是这样描述的: 该项目的目标是为Java SE平台设计和实现一个标准的模块...

58得票4回答
什么是自动模块?

自动模块在stackoverflow上被提及了很多次,但我找不到一个完整、简洁和自给自足的自动模块定义。 那么,什么是自动模块?它是否导出所有包?它是否打开所有包?它是否读取所有其他模块?

52得票2回答
项目Jigsaw与Maven的比较

来自Jigsaw项目: 使得开发人员更容易构建和维护Java SE和EE平台上的库和大型应用程序。 我正在尝试了解Jigsaw项目是什么,到目前为止,它似乎与我们使用Maven(或Gradle)依赖管理时的目标有所重叠: 它是否威胁到类似于Maven的构建工具? 或者我的理解是...

51得票4回答
当存在module-info.java时,findResource("")返回null,为什么会这样?

我正在调试为什么在我的Spring Boot应用程序中存在module-info.java时,spring-orm在启动时抛出异常。以下是异常信息: org.springframework.beans.factory.BeanCreationException: Error creating...