【问题标题】:Using sun.misc in a Maven project, Access Restriction warning在 Maven 项目中使用 sun.misc,访问限制警告
【发布时间】:2018-05-21 04:24:49
【问题描述】:

我正在尝试在我的 Java 应用程序中处理系统信号,以便 USR1USR2 将在运行环境中触发特定的调试/诊断工作流。

使用以下主应用程序:

package org.test.signals;

import sun.misc.Signal;

public class App {

    public static void main(String[] args) {

        Signal.handle(new Signal("USR1"), new MySignalHandler());
    }
}

处理程序在哪里

package org.test.signals;

import sun.misc.Signal;
import sun.misc.SignalHandler;

public class MySignalHandler implements SignalHandler {

    public void handle(Signal sig) {

        System.out.println("Got: " + sig.getName());
    }
}

在 Eclipse 中,我在 SignalSignalHandler 上都看到以下警告:

访问限制:'Signal' 类型不是 API(对所需库 'C:\Program Files\Java\jdk1.8.0_151\jre\lib\rt.jar' 的限制)

通过快速搜索,I found that this fix seems to work,警告就会消失..

但是.. 这是一个 Maven 托管项目;每次我刷新/更新 Maven 项目时,我的 .classpath 文件都会恢复到之前的配置,并且会返回警告。

我可以使用 Eclipse 向导使用全新的 Maven 项目来重现这一点。

最小的pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.test</groupId>
    <name>signals2</name>

    <version>0.0.1-SNAPSHOT</version>
    <artifactId>signals2</artifactId>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

        <maven.compiler.target>1.8</maven.compiler.target>
        <maven.compiler.source>1.8</maven.compiler.source>
    </properties>
</project>

我可以对我的 pom.xml 进行哪些更改来解决此问题,而不是更新 Eclipse 中的库?

上面链接中提到的方法中添加的JRE系统库与通过maven构建时使用的库有什么不同?

【问题讨论】:

  • 展示您的 .pom 或它的 MCVE 版本可能会很好。
  • 在创建新的 Maven 项目时,我发现 Eclipse 向导创建的现成 pom.xml 具有相同的行为。

标签: java signals compiler-warnings sun


【解决方案1】:

我只是对此进行了更多研究,并发现了这个错误的实际含义 - 以及它出现的原因。

使用 Eclipse 重新添加系统库后,警告消失了,因为这添加了我的 Eclipse 工作区默认值,即 JDK,而不是 JRE。

在我的例子中,sun.misc.Signal 类存在于 JDK 中,但不存在于 JRE 中。

【讨论】:

    猜你喜欢
    • 2020-07-09
    • 2013-06-08
    • 2019-09-30
    • 2014-12-29
    • 2015-04-04
    • 2014-09-04
    • 1970-01-01
    • 1970-01-01
    • 2011-03-20
    相关资源
    最近更新 更多