2009-03-16 12 views
5

कारण लंबा और उबाऊ है, लेकिन मुझे जावा 1.4 ऐप से जावा 1.5 कोड संकलित करने के लिए एक एंटी स्क्रिप्ट चलाने की आवश्यकता है। मैं इस त्रुटि प्राप्त हो रही है, हालांकि: मेरे कोड मेंजावा से एंटी चलाने पर JAVA_HOME सेट करना

BUILD FAILED 

build.xml:16: Unable to find a javac compiler; 
com.sun.tools.javac.Main is not on the classpath. 
Perhaps JAVA_HOME does not point to the JDK. 
It is currently set to "C:\j2sdk1.4.2_16\jre" 

, मेरे पास है:

Project p = new Project(); 
p.setUserProperty("ant.file", buildFile.getAbsolutePath()); 
p.setProperty("java.home", "C:\Program Files\Java\jdk1.6.0_04"); 
p.fireBuildStarted(); 
p.init(); 
// so on and so forth 

लेकिन यह यह ध्यान नहीं देता। मैंने p.setUserProperty (स्ट्रिंग, स्ट्रिंग) भी कोशिश की है, लेकिन यह चाल भी नहीं करता है। क्या एक अलग प्रक्रिया लॉन्च किए बिना ऐसा करने का कोई तरीका है?

+0

FYI को हल करनी चाहिए: 'java.home' को $ JAVA_HOME' पर सेट किया जाना चाहिए, न कि $ JAVA_HOME'। –

उत्तर

5

क्या आपके buildfile में जावैक कार्य fork="yes" है? यदि नहीं, तो इससे कोई फर्क नहीं पड़ता कि java.home संपत्ति क्या सेट है; चींटी उसी जावा प्रक्रिया में javac Main विधि को कॉल करने का प्रयास करेगी, जो आपकी त्रुटि से एक जेआरई है, जेडीके नहीं।

संपादितjavac द्विआधारी का पूरा पथ के लिए अपने javac काम की executable संपत्ति की स्थापना की कोशिश करो और काम करने के लिए compiler="extJavac" जोड़ें।

+0

फोर्क जोड़ना = "हां" मदद करता है - कम से कम जावैक रन, लेकिन यह अभी भी गलत संस्करण है। –

+0

मैं "निष्पादन योग्य" संपत्ति की तरह कुछ ढूंढ रहा था और इसे अभी नहीं देखा। यह कष्टप्रद है कि मुझे इसे प्रत्येक जावैक कार्य के लिए सेट करना है, लेकिन यह काम करता है। धन्यवाद। –

1

बैकस्लाश को दोगुना नहीं होना चाहिए?

p.setProperty("java.home", "C:\\Program Files\\Java\\jdk1.6.0_04"); 
+0

वे थे। मुझे लगता है कि StackOverflow पर चिपकाते समय कुछ गलत हो गया था। –

0

क्या आपने पर्यावरण चर JAVA_HOME और ANT_HOME ठीक से सेट किया है? यदि आप कोड के माध्यम से सेटिंग कर रहे हैं तो इसे काम करना चाहिए।

यह भी जांचें कि क्या आपका% JAVA_HOME% \ bin निर्देशिका% ANT_HOME% \ bin पर्यावरण चर 'पथ' में होना चाहिए।

आपकी समस्या envt में मौजूद% JAVA_HOME% \ bin के साथ प्रतीत नहीं होती है। हालांकि चर पथ।

0

इस काम को करने का एक और तरीका है 'tools.jar' को अपने क्लासपाथ में जोड़ना। जावैक कंपाइलर इस जार के भीतर निहित है।

जावा -cp $ JAVA_HOME/lib/tools.jar ...

0

javac विकल्प tools.jar में उपलब्ध है। ग्रहण में, भले ही आपका जेआरई होम एक जेडीके को इंगित करता है, फिर भी सभी सिस्टम पुस्तकालय JDK_HOME \ jre \ lib को इंगित करते हैं। कोई उपकरण नहीं है .jar। आप tools.jar को बाहरी जार फ़ाइल के रूप में जोड़ सकते हैं। इससे आपकी समस्या

संबंधित मुद्दे