当前位置: 首页 > 知识库问答 >
问题:

使用编译器选项进行Maven编译--add-exports

暨曾笑
2023-03-14

由于IntelliJ,我发现需要将以下选项传递给javac:--add-export jdk.internal.jvmstat/sun.jvmstat.perfdata.monitor.protocol.local=all-unnamed--add-export jdk.internal.jvmstat/sun.jvmstat.jvmstat.monitor=all-unnamed--add-export jdk.internal.jvmstat/sun.jvmstat.monitor=all-unnamed--

事实上,有了这些选项,我可以通过命令行进行编译。但是我还想通过MVN compile编译我的应用程序。如何在pom.xml中指定要编译器的选项?

我尝试了以下方法,但运气不好:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.8.0</version>
            <configuration>
                <release>15</release>
                <compilerArgs>
                    <arg>--add-exports</arg>
                    <arg>jdk.internal.jvmstat/sun.jvmstat.perfdata.monitor.protocol.local=ALL-UNNAMED</arg>
                    <arg>--add-exports</arg>
                    <arg>jdk.internal.jvmstat/sun.jvmstat.monitor=ALL-UNNAMED</arg>
                    <arg>--add-exports</arg>
                    <arg>jdk.internal.jvmstat/sun.jvmstat.monitor.event=ALL-UNNAMED</arg>
                </compilerArgs>
                <fork>true</fork>
            </configuration>
        </plugin>

同时,我将修改代码,并通过扫描/proc/目录来读取运行JVM的pid。


共有1个答案

江德润
2023-03-14

我有一个好消息告诉您,您不再需要LocalVMManager了。这将用于当前的JVM:

ProcessHandle.current().pid()

访问其他进程的PID:

ProcessHandle
    // returns Stream<ProcessHandle>
    .allProcesses()
    .filter(/* filter to only find JVM processes */)
    .map(ProcessHandle::pid)
    .collect(toList());

processhandleAPI是在Java9中添加的,它为您提供了大量关于OS进程的信息--请检查方法info()。:)

 类似资料:
  • 问题内容: 我有一个Java FX项目,正在使用maven 3.0.5进行构建。当我运行mvn package / install时,项目失败,并抱怨该包javafx。 * 不存在。据我了解,Javafx是用Java 1.7打包的,因此该构建没有接受它是没有意义的。当我在IDE(intellij)中编译它时,它可以正常工作,并且之后我的maven构建也成功安装,但是我不希望每次执行全新安装时都必须

  • 问题内容: 我正在尝试反编译 Java项目(.jar)文件,并且能够从其中获取.java文件。现在如何将其编译回来?我可以将.java文件作为单个文件添加到Netbeans。但是如何将其作为项目添加并编译呢?该项目是JavaFX项目。所以请帮我。 问题答案: 有很多方法可以实现此目的,但是我认为您不能像这样直接在框内(在本例中为开箱)将项目导入jar中。 我们可以使用最基本的技术(我承认有点脏),

  • 问题内容: 我有一个文件和。 当我进行调试构建时,我得到: 如何将添加到基础任务?关于Java编译选项的Gradle插件用户指南无济于事。 问题答案: 我根据有关操作任务的Gradle插件用户指南和有关JavaCompile的Gradle DSL文档 找到了以下解决方案: 添加到: 应用程序变体在Gradle的配置阶段,所需的任务也不存在,因此我在执行阶段进行了修改。

  • 编译选项 选项 类型 默认值 描述 --allowJs boolean false 允许编译javascript文件。 --allowSyntheticDefaultImports boolean module === "system"或设置了--esModuleInterop 允许从没有设置默认导出的模块中默认导入。这并不影响代码的输出,仅为了类型检查。 --allowUnreachableCo

  • 问题内容: 我试图跟踪此编译错误: 如何在我的Maven编译中找到设置?我使用的是普通香草(据我所知)没有设置任何内容。 问题答案: 这是因为您使用的是普通香草,所以您会遇到此问题。 默认情况下,无论您设置为什么,在编译源代码时都会调用,使用Java 5进行编译: 还要注意,当前的默认源设置是1.5,默认目标设置是1.5,与运行Maven的JDK无关。 要使用其他编译器版本(例如Java 8),可

  • 问题内容: 在NetBeans 7.2中,我很难找到如何在Maven项目中使用-Xlint:unchecked进行编译。在Ant项目下,可以通过转到Project Properties-> Compiling来更改编​​译器标志,但是Maven项目似乎没有任何此类选项。 有什么方法可以使用Maven将IDE配置为使用此类标志进行编译? 问题答案: 我猜您可以在pom.xml中设置编译器参数。请参考