我是一个dotnet程序员,近期因为项目需要刚刚上手了java和FlinkCDC,我的代码写完了在idea中能够正常运行,但是不知道为什么通过maven打包之后一直报这个异常?Exception in thread "main" java.lang.reflect.InaccessibleObjectException: Unable to make field private static final long java.util.Properties.serialVersionUID accessible: module java.base does not "opens java.util" to unnamed module @6a396c1e
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.1.1</version>
<executions>
<!-- Run shade goal on package phase -->
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<artifactSet>
<excludes>
<exclude>org.apache.flink:force-shading</exclude>
<exclude>com.google.code.findbugs:jsr305</exclude>
</excludes>
</artifactSet>
<filters>
<filter>
<artifact>*:*</artifact>
<excludes>
<exclude>META-INF/*.SF</exclude>
<exclude>META-INF/*.DSA</exclude>
<exclude>META-INF/*.RSA</exclude>
</excludes>
</filter>
</filters>
<transformers combine.children="append">
<!-- TODO:这个防止多个connector的相同类名覆盖-->
<transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
<!--指定 主类-->
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>com.sjzy.FlinkCDC</mainClass>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
这个异常是由于Java 9及更高版本引入的模块化系统导致的。在Java 9中,模块系统允许将代码分割成多个独立的模块,以便更好地组织和管理代码。然而,这种新的模块化系统与旧的类加载器模型不兼容,因此导致了这个问题。
要解决这个问题,你可以尝试以下方法:
将你的项目升级到Java 8,因为Java 8不支持模块化系统。如果你不能升级到Java 8,你可以考虑使用其他工具,如Maven或Gradle,来构建和运行你的项目。
如果你必须使用Java 9或更高版本,你可以尝试在你的项目中显式地打开java.util
模块。在你的module-info.java
文件中添加以下代码:
module your.module.name {
requires java.base;
exports your.package.name;
}
这将允许你的模块访问java.util
包中的类。请注意,这可能会导致一些安全问题,因为它可能会暴露你的代码中的敏感信息。因此,请确保你了解这些风险,并在实施此解决方案之前进行充分的评估。
ava -jar xxx.jar.看pom配置 应该依赖没打进去 或者指定一下classpath。此回答来自钉群Flink CDC 社区。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。