![](/img/trans.png)
[英]Java error: java.lang.IllegalArgumentException: Signal already used by VM: INT
[英]java.lang.IllegalArgumentException: Signal already used by VM or OS
我正在使用一些試圖處理“URG”信號的 Java,如下所示:
Signal.handle(new Signal("URG"), handler)
但是,我一直收到java.lang.IllegalArgumentException: Signal already used by VM or OS: SIGURG
on my macOs Catalina 10.15.5
system with AdoptOpen JDK Version: 12.0.1.j9-adpt
JVM.
我已經使用調試器逐步完成了代碼,但我沒有看到提前添加了這個信號,而 Google 的結果為 0。
好的,我在 Scala 中做了一個最小的復制:
import sun.misc.{Signal, SignalHandler}
object Main extends App {
Signal.handle(new Signal("URG"), URGHandler.handle)
println("hello")
}
object URGHandler extends SignalHandler {
override def handle(sig: Signal): Unit = {
print("received signal")
}
}
Exception in thread "main" java.lang.IllegalArgumentException: Signal already used by VM or OS: SIGURG
at java.base/jdk.internal.misc.Signal.handle(Signal.java:173)
這是 Intellij 運行該程序的命令:
~/.sdkman/candidates/java/12.0.1.j9-adpt/bin/java \
-javaagent:/Applications/IntelliJ IDEA CE.app/Contents/lib/idea_rt.jar=53899:/Applications/IntelliJ IDEA CE.app/Contents/bin \
-Dfile.encoding=UTF-8 \
-classpath /Users/userperson/IdeaProjects/urg/target/scala-2.13/classes:/Users/userperson/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/scala-library/2.13.4/scala-library-2.13.4. jar \
Main
和 Java 中的最小復制:
import sun.misc.Signal;
import sun.misc.SignalHandler;
public class Main {
public static void main(String[] args) {
Signal.handle(new Signal("URG"), new URGHandler());
}
}
class URGHandler implements SignalHandler {
@Override
public void handle(Signal sig) {
System.out.println("hello signal");
}
}
我嘗試過的其他信號:
好吧,原來 Google 上的所有 Signal Chaining 文檔都不起作用,但是將 JDK 更改為 Oracle Open JDK 15.0.1 卻起作用了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.