मैं जावा समस्या की जांच कर रहा हूं (आईबीएम जेवीएम 1.4.2 64-बिट का उपयोग कर) Red Hat Linux पर। मुझे आश्चर्य है कि किसी ने इस त्रुटि संदेश को पहले देखा है और जानता है कि इस समस्या का कोई समाधान है या नहीं?जावा त्रुटि: java.lang.IllegalArgumentException: सिग्नल पहले से ही वीएम द्वारा उपयोग किया जाता है: INT
स्रोत:
import sun.misc.Signal;
import sun.misc.SignalHandler;
public class SignalTest extends Thread
{
private static Signal signal = new Signal("INT");
private static ShutdownHandler handler = new ShutdownHandler();
private static class ShutdownHandler implements SignalHandler
{
public void handle(Signal sig)
{
}
}
public static void main(String[] args)
{
try
{
Signal.handle(signal, handler);
}
catch(Throwable e)
{
e.printStackTrace();
}
try { Thread.sleep(5000); } catch(Exception e) { e.printStackTrace(); }
System.exit(0);
}
}
आउटपुट:
java.lang.IllegalArgumentException <Signal already used by VM: INT>
java.lang.IllegalArgumentException: Signal already used by VM: INT
at
com.ibm.misc.SignalDispatcher.registerSignal(SignalDispatcher.java:145)
at sun.misc.Signal.handle(Signal.java:199)
at xxx
अतिरिक्त जानकारी:
मैं कुछ अजीब में पता चला। कारण यह विफल रहता है क्योंकि मैं पृष्ठभूमि प्रक्रिया के रूप में एक शेल स्क्रिप्ट के अंदर प्रोग्राम चला रहा हूं।
यानी sigtest.sh:
#!/bin/bash
java -cp . SignalTest >> sigtest.log 2>&1 &
अगर मैं कमांड लाइन से कार्यक्रम चलाने, या "&" (यानी इसे खोल स्क्रिप्ट के अंदर एक अग्रभूमि प्रक्रिया), यह नहीं है को दूर एक समस्या है ... मुझे समझ में नहीं आता कि यह मामला क्यों है।
जिन ने मेरे उत्तर पर आपकी टिप्पणी दी, जेवीएम आपको इस घटना पर एक हुक पंजीकृत करने की अनुमति नहीं दे रहा है। क्या आप जो कुछ हासिल करने की कोशिश कर रहे हैं उसके बारे में अधिक जानकारी दे सकते हैं? शायद ऐसा करने का एक तरीका है जो JVM की अपेक्षा के साथ समन्वयित है। – Yishai
मैं चाहता हूं कि प्रोग्राम बाधित होने पर कुछ "साफ-सफाई" कोड चलाकर गहराई से बाहर निकलें। –
मुद्दा जेवीएम विशिष्ट था। मैंने जिटर को बक्षीस से सम्मानित किया, क्योंकि उनके जवाब में "जेवीएम कार्यान्वयन विशिष्ट" शामिल था और मेरी समस्या का निदान करने के लिए सबसे अधिक टूल प्रदान किए गए थे। सभी को धन्यवाद। –