2011-12-03 9 views
5

recompiling को कैसे रोकें मैंने एक अच्छी प्लगइन लिखी है, जो कुछ जेनरेट किए गए जावा स्रोतों को उजागर करता है।ग्रहण पीडीई बिल्ड/निर्यात प्लगइन/फीचर/अपडेट साइट फ़ाइल एन्कोडिंग का सम्मान नहीं करती है -

मैं इस परियोजना को ठीक से बना सकता हूं। मैं इसे एक रन कॉन्फ़िगरेशन में चला सकता हूं जो एक और ग्रहण लॉन्च करता है और यह मेरी पसंद के अनुसार काम करता है।

तो मैंने सोचा: इसे स्थापित करने के लिए समय सक्षम है।

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

लंबे खोज के बाद, पुनर्निर्माण (कोई त्रुटि), बार-बार retesting मैं एक logs.zip फ़ाइल एक निर्देशिका जिसका नाम के साथ मिल जाए, जैसा दिखता है कि मेरे प्लगइन और उसमें एक 54K फाइल का (ध्यान रखें कि आप, 2011 है और डिस्क स्थान अत्यंत है दुर्लभ, स्पष्ट रूप से) अजीब नाम @dot.log के साथ। ऐसी फाइल को देखने के लिए कितना हताश होना चाहिए ?! लेकिन, आश्चर्य, आश्चर्य की बात है, यह पता चला है निम्नलिखित की तरह 54K त्रुटि संदेश देखते हैं:

# 02.12.11 19:58:55 MEZ 
# Eclipse Compiler for Java(TM) 0.B76_R37x, 3.7.1, Copyright IBM Corp 2000, 2011. All rights reserved. 
---------- 
1. ERROR in X:\dev\frege\FregIDE\src\frege\IO.java (at line 1451) 
final public static Consts ij = new Consts(); 
          ^
Syntax error on token "Invalid Character", delete this token 

"अवैध वर्ण" कर रहे हैं, ज़ाहिर है, पूरी तरह से कानूनी जावा पहचानकर्ता, वर्णों, यह सिर्फ है कि वे ASCII अक्षरों नहीं हैं। यही कारण है कि मेरे पास यूटीएफ -8 पर सेट की गई सभी फाइलें हैं, आपने यूटीएफ -8 को डिफ़ॉल्ट एन्कोडिंग के रूप में सेट किया है, और जैसा कि पहले कहा गया है, सामान्य निर्माण के साथ यह पूरी तरह से काम करता है।

जब मैं अद्यतन साइट, सुविधा या प्लगइन निर्यात करता हूं तो ग्रहण को हर चीज को दोबारा बदलने से रोकने का कोई तरीका है। यही वह है जो मैं सबसे ज्यादा पसंद करूंगा क्योंकि सब कुछ पहले ही संकलित है और पुन: संकलन एक और मिनट लेता है। (यहां तक ​​कि एक ध्वज भी है "वर्कस्पेस में संकलित क्लास फाइलों का उपयोग करें।" लेकिन ऐसा कुछ भी नहीं लगता है - यह सिर्फ पुन: संकलित करता है।)

वैकल्पिक: क्या मैं इसे बनाने के लिए उपयोग की जाने वाली स्क्रिप्ट को किसी भी तरह संशोधित कर सकता हूं? मुझे वह चींटी स्क्रिप्ट नहीं मिलती जिसे वह बनाने के लिए उपयोग करता है। अगर मैं जावैक कदम देख सकता हूं और वहां एन्कोडिंग यूटीएफ -8 डाल सकता हूं (यही वह है जो मुझे समस्या होने की उम्मीद है।) "एंटी स्क्रिप्ट के रूप में सहेजें" चेकबॉक्स है, लेकिन चींटी फ़ाइल में केवल इसमें शामिल हैं:

<?xml version="1.0" encoding="UTF-8"?> 
<project default="feature_export" name="build"> 
<target name="feature_export"> 
    <pde.exportFeatures destination="x:\dev\frege\FregeUpdateSite" 
           exportSource="false" exportType="directory" 
           features="FregeFeature" useJARFormat="true"/> 
</target> 
</project> 

अगर मैं संकलन से इसे रोक नहीं सकता तो मैं संकलन निर्माण के लिए सही सेटिंग्स का उपयोग कैसे कर सकता हूं?

+0

इस बीच बाहर मिले एक संभव समाधान "javacDefaultEncoding" और "javacCustomEncodings" गुण जो अपने बंडल के build.properties फ़ाइल में जाना भी eclipse.ini – Ingo

उत्तर

7

यदि आप कार्यक्षेत्र से निर्यात करने के लिए "pde.exportFeatures" कार्य का उपयोग कर रहे हैं, तो मेरा मानना ​​है कि वर्कस्पेस से बाइनरी का उपयोग करने के लिए "useWorkspaceCompiledClasses" विशेषता है। यह निर्यात विज़ार्ड में चेक बॉक्स के बराबर है।

ध्यान दें कि pde.exportFeatures कार्य UI से एक निर्यात है और headless PDE/Build से अलग है। properties कि फ़्रांसिस का संदर्भ है हेडलेस पीडीई/बिल्ड के लिए। एक निर्यात के दौरान, पीडीई/यूआई इन्हें आपके लिए प्रबंधित करता है और आप उन्हें बदल नहीं सकते हैं।

plug-in and feature specific properties यूआई निर्यात के साथ-साथ हेडलेस बिल्ड को प्रभावित करेगा। (मुझे फ्रांसिस के उत्तर पर मेरी टिप्पणी में गलत लिंक मिला है)।

मैं वर्कस्पेस बाइनरी का पुन: उपयोग करने के बजाय प्लगइन की build.properties फ़ाइल में एन्कोडिंग सेट करने की अनुशंसा करता हूं। मैं यूआई कार्य से निर्यात के बजाय वास्तविक पीडीई/बिल्ड हेडलेस बिल्ड स्थापित करने का भी सुझाव दूंगा।

+0

धन्यवाद उत्तर का जवाब। स्पष्टीकरण के लिए: आप हेडलेस बिल्ड की बिल्कुल सिफारिश क्यों करते हैं? क्या आप आम तौर पर या सिर्फ मेरे लिए अनुशंसा करते हैं क्योंकि मैं अपनी समस्याओं को हल कर सकता हूं? – Ingo

+1

यह सादगी और पूर्ण नियंत्रण/अनुकूलन के बीच वास्तव में एक व्यापार बंद है। मुझे विश्वास नहीं है कि लिंकिस में दिए गए लिंक में से किसी भी गुण pde.exportFeatures के साथ उपलब्ध हैं, यह कार्य आपके लिए उचित डिफ़ॉल्ट चुन रहा है। हालांकि, एक पूर्ण स्वचालित हेडलेस बिल्ड जटिल हो सकता है और सीखने के लिए बहुत कुछ है। यह वास्तव में आपकी ज़रूरतों पर निर्भर करता है, लेकिन आप एक बुनियादी हेडलेस बिल्ड स्थापित कर सकते हैं जो तब बढ़ सकता है और अनुकूलित किया जा सकता है क्योंकि आपको इसके लिए और आवश्यकताएं मिलती हैं। –

6

आप build.properties फ़ाइल है कि संकलन है कि निर्माण में किया जाता है के लिए संकलक विकल्पों को सेट करने PDE निर्माण का हिस्सा है का उपयोग कर सकते हैं: http://help.eclipse.org/indigo/topic/org.eclipse.pde.doc.user/reference/pde_builder_config.htm (-encoding विकल्प का उपयोग)

कोई तरीका नहीं है कि मैं निर्माण में अपने कार्यक्षेत्र से कक्षा फ़ाइलों का उपयोग करने के बारे में पता है।

+2

देखें में '-Dfile.encoding = UTF-8' स्थापित करने के लिए है। ये आपको प्रति बंडल एन्कोडिंग या फ़ोल्डर/फ़ाइल स्तर पर सेट करने देते हैं। http://help.eclipse.org/indigo/index.jsp?topic=%2Forg.eclipse.pde.doc.user%2Freference%2Fpde_builder_config.htm –

+1

मुझे आपके और एंड्रयू के बीच बोनस को विभाजित करना अच्छा लगेगा। यदि यह काम नहीं करता है, तो आपको बोनस मिलेगा (पहले होने के लिए) और एंड्रयूज उत्तर स्वीकार किया जाएगा। – Ingo

+1

धन्यवाद इनगो, एंड्रयू वास्तव में इस पर दोस्त है क्योंकि वह पीडीई निर्माण पर काम करता है। मैं धन को साझा करने के लिए अपनी सारी चीजें उठाऊंगा। :) –

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