java - ग्रहण में एनोटेशन प्रोसेसर डिबग करना




eclipse ant (2)

मैं एक साधारण एनोटेशन प्रोसेसर लिख रहा हूं और इसे ग्रहण के द्वारा डिबग करने की कोशिश कर रहा हूं। मैंने एनोटेशन प्रोसेसर के लिए एक नया प्रोजेक्ट बनाया है और जेवाक्स। एनोटेशन। प्रोसेसिंग को कॉन्फ़िगर किया है। आवश्यकता के अनुसार मेटा-आईएनएफ के तहत प्रोसेसर और यह एनाटेशन को ठीक करता है।

फिर, मैंने कुछ और कोड जोड़ दिए और डीबगिंग करने की कोशिश की, लेकिन एनोटेशन प्रोसेसर में जोड़े गए ब्रेकपॉइंट पर एक्ज़्यूशन स्टॉप कभी नहीं कर सके। मैं चींटी का उपयोग कर संकलित कर रहा हूं और मैं निम्नलिखित एएनटी विकल्प का उपयोग कर रहा हूं।

निर्यात ANT_OPTS = "- Xdebug -Xrunjdwp: transport = dt_socket, सर्वर = y, निलंबित = y, पता = 8000"

चींटी निर्माण को ट्रिगर करने के बाद, मैं एक दूरस्थ डीबग कॉन्फ़िगरेशन बना रहा हूं और डीबगर ठीक शुरू होता है। चींटी का निर्माण भी सफलतापूर्वक शुरू होता है लेकिन एनोटेशन प्रोसेसर में जोड़े गए किसी भी ब्रेक पॉइंट पर निष्पादन कभी भी बंद नहीं होता है।


सबसे आसान तरीका है एक ग्रहण प्लगइन बनाना और फिर इसे ग्रहण से सीधे डिबग करना है यह बहुत कठिन है तो यह है - यह है: https://www.youtube.com/watch?v=PjUaHkUsgzo यूट्यूब में एक 7 मिनट की मार्गदर्शिका है जो आपको आरंभ कर सकता है।


यह एक ऐसी समस्या है जो मैं बस गया था, और ग्रहण प्लगइन समाधान मेरे लिए बेहद बोझल लगता है मुझे संकलन प्रक्रिया को लागू करने के लिए javax.tools.JavaCompiler का उपयोग करके एक सरल समाधान मिला। नीचे दिए गए कोड का उपयोग करना, आप राइट-क्लिक करें> डीबग कर सकते हैं> एक्वायप्से में जेयूनेट टेस्ट और आप से सीधे एनोटेशन प्रोसेसर डीबग कर सकते हैं

   @Test
   public void runAnnoationProcessor() throws Exception {
      String source = "my.project/src";

      Iterable<JavaFileObject> files = getSourceFiles(source);

      JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();

      CompilationTask task = compiler.getTask(new PrintWriter(System.out), null, null, null, null, files);
      task.setProcessors(Arrays.asList(new MyAnnotationProcessorClass()));

      task.call();
   }

   private Iterable<JavaFileObject> getSourceFiles(String p_path) throws Exception {
     JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
     StandardJavaFileManager files = compiler.getStandardFileManager(null, null, null);

     files.setLocation(StandardLocation.SOURCE_PATH, Arrays.asList(new File(p_path)));

     Set<Kind> fileKinds = Collections.singleton(Kind.SOURCE);
     return files.list(StandardLocation.SOURCE_PATH, "", fileKinds, true);
   }




annotation-processing