You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kotlin中启动Hazelcast遇权限警告,如何通过Maven自动配置解决?

解决Kotlin+Maven环境下Hazelcast模块权限警告的配置方案

你之前配置的javacOptions是编译阶段的参数,而Hazelcast需要的是运行阶段的JVM模块访问参数,所以之前的配置完全没作用。下面是几个可行的Maven配置方案,能让项目克隆后直接运行无需手动传参:

方案1:用exec-maven-plugin直接运行项目

这个插件专门用来在Maven中执行Java/Kotlin程序,能直接配置运行时的JVM参数。在pom.xml中添加以下配置:

<build>
    <plugins>
        <!-- 保留你已有的其他插件配置 -->
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>exec-maven-plugin</artifactId>
            <version>3.1.0</version>
            <configuration>
                <!-- 替换成你的Kotlin主类全限定名,比如com.example.MainKt -->
                <mainClass>你的主类全限定名</mainClass>
                <!-- 替换成Hazelcast提示的具体JVM参数,示例为常见的模块权限参数 -->
                <jvmArguments>--add-opens java.base/java.nio=ALL-UNNAMED --add-opens java.base/java.lang=ALL-UNNAMED</jvmArguments>
            </configuration>
            <executions>
                <execution>
                    <goals>
                        <goal>java</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

之后直接执行mvn exec:java就能带参数启动项目,警告会自动消失。

方案2:打包成可执行JAR并配套运行配置

如果需要打包成可执行JAR,除了配置主类,还可以结合exec插件保证直接运行的便利性,同时用maven-shade-plugin处理依赖打包:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-shade-plugin</artifactId>
            <version>3.4.1</version>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>shade</goal>
                    </goals>
                    <configuration>
                        <transformers>
                            <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                                <mainClass>你的主类全限定名</mainClass>
                            </transformer>
                        </transformers>
                        <filters>
                            <filter>
                                <artifact>*:*</artifact>
                                <excludes>
                                    <exclude>META-INF/*.SF</exclude>
                                    <exclude>META-INF/*.DSA</exclude>
                                    <exclude>META-INF/*.RSA</exclude>
                                </excludes>
                            </filter>
                        </filters>
                    </configuration>
                </execution>
            </executions>
        </plugin>
        <!-- 配套exec插件用于直接运行 -->
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>exec-maven-plugin</artifactId>
            <version>3.1.0</version>
            <configuration>
                <mainClass>你的主类全限定名</mainClass>
                <jvmArguments>--add-opens java.base/java.nio=ALL-UNNAMED</jvmArguments>
            </configuration>
        </plugin>
    </plugins>
</build>

打包后可以用mvn exec:java直接运行,或者如果需要用java -jar启动,建议写一个简单的bat/sh脚本,把JVM参数内嵌进去,方便其他人直接执行。

方案3:测试阶段消除警告(如果是测试时出现)

如果警告是在运行单元测试时触发的,需要配置maven-surefire-plugin的argLine参数:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>3.1.2</version>
            <configuration>
                <argLine>--add-opens java.base/java.nio=ALL-UNNAMED --add-opens java.base/java.lang=ALL-UNNAMED</argLine>
            </configuration>
        </plugin>
    </plugins>
</build>

这样执行mvn test时,测试进程会自动带上这些JVM参数,消除警告。


内容的提问来源于stack exchange,提问作者alturkovic

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 02:37:45