2010-03-08 9 views
6

मैं अपाचे एंट और जीसीजे दोनों के लिए बिल्कुल नया हूं, और मुझे एंट के माध्यम से जीसीजे के साथ निर्माण करने में कठिनाई हो रही है।चींटी के साथ जीसीजे का उपयोग कैसे करें?

मेरा ऐप स्कैला में है, इसलिए मुझे स्रोत के रूप में क्लास फ़ाइलों को लेने के लिए जीसीजे का उपयोग करने की आवश्यकता है। एंट के साथ .clala को .ccala संकलित करने में कोई समस्या नहीं है।

gcj --classpath=(...) -c (somepath)MouseClickListener.class -o (somepath)MouseClickListener.o 

मैं here देखते हैं कि चींटी javac टैग के माध्यम से GCJ संकलन का समर्थन करता है:

सबसे पहले मैं इस तरह से पता लगा है कि कैसे मैन्युअल रूप से ओ के लिए एक .class फ़ाइल संकलित करने के लिए (वस्तु),। तो मुझे लगा कि यह काम करना चाहिए:

<target name="gcjCompile" depends="compile"> 
    <mkdir dir="${object.dir}" /> 
    <javac srcdir="${build.dir}" 
      destdir="${object.dir}" 
      compiler="gcj" 
      executable="C:/gcc/gcc-4.3/bin/gcj.exe" 
      classpathref="gcjProject.classpath"> 
     <include name="**/*.class"/> 
    </javac> 
</target> 

लेकिन यह जाव कार्य कुछ भी नहीं करता है और मुझे कोई त्रुटि नहीं मिलती है। कोई सुराग? धन्यवाद

+0

> मेरा ऐप स्कैला में है, इसलिए मुझे > जीसीजे का उपयोग स्रोत के रूप में .class फ़ाइलों को लेने की आवश्यकता है। यह एक * गैर अनुक्रमक * है। जीसीजे जावा नहीं है। मैं आपको इसका इस्तेमाल करने की सलाह नहीं दे सकता। यदि आपके पास देशी संकलन होना चाहिए तो वहां मौजूद मौजूदा उत्पाद हैं। – EJP

+0

आप किसकी सिफारिश करेंगे? –

उत्तर

1

ऐसा लगता है जैसे आप अपने ऐप को मूल निष्पादन योग्य में जोड़ना चाहते हैं। इसका मतलब है कि आपने पहले ही स्रोत को JVM बाइटकोड में संकलित कर लिया है (जैसा कि आपने .clala फ़ाइलों में .scala संकलित करके किया है)। Gte ऑब्जेक्ट कोड फ़ाइलों में बाइटकोड संकलित करने के लिए आपको <exec> कार्य का उपयोग करके मैन्युअल रूप से gcj आदेश चलाने की आवश्यकता होगी।

मैं कुछ इस तरह की सलाह देते हैं:

<property name="main.class" value="Main" /> 
<property name="class.dir" value="${basedir}/classes" /> 
<target name="compile"> 
    <mkdir dir="${class.dir}" /> 
    <javac srcdir="${build.dir}" 
     destdir="${class.dir}" 
     compiler="gcj" 
     executable="C:/gcc/gcc-4.3/bin/gcj.exe" 
     classpathref="gcjProject.classpath"> 
    <include name="**/*.java"/> 
    </javac> 
</target> 
<target name="link" depends="compile"> 
    <mkdir dir="${object.dir"} /> 
    <exec cmd="C:/gcc/gcc-4.3/bin/gcj.exe"> 
    <arg value="-classpath=${object.dir}" /> 
    <arg value="-c" /> 
    <arg value="*.class" /> 
    </exec> 
</target> 

ध्यान रखें कि आप build.dir और object.dir गुण परिभाषित करने की जरूरत है, और आप संकलन लक्ष्य में javac से पहले एक depends कार्य जोड़ने के लिए आवश्यकता हो सकती है (या हर बार खरोंच से फिर से संकलित)। मैंने कई चीजों को याद किया होगा, आपको मैन्युअल पृष्ठों (जीसीजे, जीसीसी और चींटी के लिए) जांचना चाहिए यदि यह पहले काम नहीं करता है।

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