2015-09-24 7 views
6

में सामग्री की अनुमति नहीं है मैं स्प्रिंग के लिए नया हूं और स्प्रिंट टूल सूट (ग्रहण) का उपयोग करना शुरू कर दिया है और इस त्रुटि को मेरे मैवेन प्रोजेक्ट में जावा फ़ाइल में देख रहा हूं: "प्रोलॉग में सामग्री की अनुमति नहीं है"। यह कक्षा को संकलित करने से रोकता है (जो कि बस एक न्यूनतम स्प्रिंगबूट अनुप्रयोग वर्ग है) ग्रहण में।जावा फ़ाइल: प्रोलॉग

package com.test; 

import org.springframework.boot.SpringApplication; 
import org.springframework.boot.autoconfigure.SpringBootApplication; 

@SpringBootApplication 
public class Application { 

    public static void main(String[] args) { 
     SpringApplication.run(Application.class, args); 
    } 
} 

मैंने वेब को खराब कर दिया है और देखा है कि लगभग हर संदर्भ में, यह एक एक्सएमएल-पार्सिंग त्रुटि है। मैं तीन एक्सएमएल फाइलों को अद्यतन कर रहा था लेकिन एक हेक्स संपादक में <?xml से पहले कोई अदृश्य वर्ण नहीं देखा। वे सभी यूटीएफ -8 एन्कोडिंग का उपयोग करने के लिए निर्दिष्ट करते हैं और मैं 0 बाइट्स को वैकल्पिक रूप से नहीं देख रहा हूं जो एक आकस्मिक यूटीएफ -16 एन्कोडिंग का संकेत देगा। रेखा समाप्ति लगातार लगती है (केवल एक लाइन फ़ीड)।

दिलचस्प बात यह है कि यह "मैवेन क्लीन इंस्टॉल" के साथ कंपाइलर त्रुटियों के बिना बनाता है। मुझे जावा फ़ाइल में कोई विशेष पात्र नहीं दिख रहा है, लेकिन ग्रहण मुझे बताता है कि फाइल समस्या है और यह वसंत बीन्स की समस्या है। त्रुटि संदेश पैकेज विवरण के साथ पहली पंक्ति पर दिखाता है।

कोई भी विचार क्या मूल समस्या है या मैं इसे कैसे हल कर सकता हूं?

अद्यतन के रूप में अनुरोध किया है, यहाँ मेरी pom.xml फ़ाइल है:

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>org.springframework</groupId> 
    <artifactId>gs-rest-service</artifactId> 
    <version>0.1.0</version> 

    <parent> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-parent</artifactId> 
     <version>1.2.5.RELEASE</version> 
    </parent> 

    <dependencies> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-web</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.mybatis</groupId> 
      <artifactId>mybatis</artifactId> 
      <version>3.2.8</version> 
     </dependency> 
     <dependency> 
      <groupId>mysql</groupId> 
      <artifactId>mysql-connector-java</artifactId> 
     </dependency> 
    </dependencies> 

    <properties> 
     <java.version>1.8</java.version> 
    </properties> 


    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.springframework.boot</groupId> 
       <artifactId>spring-boot-maven-plugin</artifactId> 
      </plugin> 
     </plugins> 
     <resources> 
     <resource> 
      <targetPath>com/test/mybatis/mappers</targetPath> 
      <directory>src/main/java/com/test/mybatis/mappers</directory> 
      <includes> 
      <include>*.xml</include> 
      </includes> 
     </resource> 
     <resource> 
      <directory>src/main/resources</directory> 
     </resource> 
     </resources> 
    </build> 

    <repositories> 
     <repository> 
      <id>spring-releases</id> 
      <url>https://repo.spring.io/libs-release</url> 
     </repository> 
    </repositories> 
    <pluginRepositories> 
     <pluginRepository> 
      <id>spring-releases</id> 
      <url>https://repo.spring.io/libs-release</url> 
     </pluginRepository> 
    </pluginRepositories> 
    <dependencyManagement> 
     <dependencies> 
      <dependency> 
       <groupId>mysql</groupId> 
       <artifactId>mysql-connector-java</artifactId> 
       <version>5.1.36</version> 
      </dependency> 
     </dependencies> 
    </dependencyManagement> 
</project> 

अद्यतन 2 मैं सभी .xml फ़ाइलें के लिए अपने प्रोजेक्ट फ़ोल्डर की खोज और सभी अदृश्य पात्रों को प्रोग्राम के perl -i -pe 's/[^\x20-\x7f\x0A\x09]//g' fileName का उपयोग कर निकाल दिया है, लेकिन कोई अदृश्य पात्र नहीं थे। यह हेक्स संपादक में मैंने जो देखा वह पुष्टि करता है।

दो प्रश्न ध्यान में आते हैं: त्रुटि के बजाय .java फ़ाइल में त्रुटि क्यों दिख रही है। एक्सएमएल फाइल? ग्रहण के लिए यह केवल एक समस्या क्यों है और मैवेन नहीं है?

org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 1; Content is not allowed in prolog. 
    at org.apache.xerces.parsers.DOMParser.parse(Unknown Source) 
    at org.springframework.ide.eclipse.core.io.xml.XercesDocumentLoader.loadDocument(XercesDocumentLoader.java:48) 
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadDocument(XmlBeanDefinitionReader.java:429) 
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:391) 
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:336) 
    at org.springframework.ide.eclipse.beans.core.internal.model.BeansConfig$2.loadBeanDefinitions(BeansConfig.java:397) 
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:304) 
    at org.springframework.ide.eclipse.beans.core.internal.model.BeansConfig$3.call(BeansConfig.java:456) 
    at org.springframework.ide.eclipse.beans.core.internal.model.BeansConfig$3.call(BeansConfig.java:1) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
    at java.lang.Thread.run(Thread.java:745) 

अद्यतन 3 मैं पात्रों के साथ मेरी कार्यक्षेत्र में कुछ ग्रहण रूप से जेनरेट एक्सएमएल फ़ाइलें मिला <?xml से पहले का उपयोग कर:

ग्रहण लॉग इस संदेश को (जो एक .xml फ़ाइल को इंगित करता है) से पता चलता grep -ERl '^[^=]+<\?xml' . जो कुछ ग्रहण उपयोगकर्ता prefs को अनदेखा करता है जिसमें फ़ाइल की पंक्तियों में एम्बेडेड xml है। अतिरिक्त पात्रों को हटाने के बाद, समस्या हालांकि बनी रही।

सोचें कि मैं प्रोजेक्ट को पुनरारंभ कर सकता हूं और फ़ाइलों को एक समय में कॉपी कर सकता हूं।

+1

किंडा दूर-दूर तक पहुंचा, लेकिन हो सकता है कि यह विंडोज से यूनिक्स तक लाइन-ब्रेक से संबंधित हो? ऐसा तब हो सकता है जब किसी ने विंडोज़ पर फ़ाइल सहेजी और फिर इसे यूनिक्स पर खोला। आप dos2unix चलाकर इसे ठीक कर सकते हैं। –

+0

क्या आपने जांच की है [प्रोलॉग में ग्रहण सामग्री की अनुमति नहीं है] (http://stackoverflow.com/questions/5445143/eclipse-content-is-not-allowed-in-prolog)? –

+0

@Elliott Frisch मैंने अपना pom.xml – rimsky

उत्तर

7

ऐसा लगता है कि अपराधी भ्रष्ट ग्रहण कार्यक्षेत्र था। मैंने एक नया वर्कस्पेस बनाया और प्रोजेक्ट आयात किया और सब कुछ ठीक काम करता है। यह भी समझाएगा कि एक बाहरी मैवेन बिल्ड ने कोई समस्या क्यों नहीं दिखायी।

जैसा कि अद्यतन 3 में उल्लेख किया गया है, मुझे कुछ ग्रहण उत्पन्न जेएमएल फाइलें मिलीं जिनमें प्रोलॉग से पहले अक्षर थे। यद्यपि उनको सुधारने से समस्याएं ठीक नहीं हुईं, मैंने xcl सामग्री (जैसे उपयोगकर्ता prefs) के साथ प्रत्येक ग्रहण फ़ाइल का निरीक्षण नहीं किया, यह देखने के लिए कि क्या उनके पास प्रोलॉग से पहले कुछ अदृश्य पात्र हैं।

पता नहीं है कि यह एक अनुत्तरदायी मैवेन रेपो अपडेट के दौरान ग्रहण छोड़ने के बावजूद दूषित होने के कारण क्या होगा, लेकिन मैं निश्चित नहीं हो सकता कि मेरी परेशानी शुरू होने पर मैं निश्चित नहीं हो सकता। मुझे खुशी है कि मैं आगे बढ़ सकता हूं।

+0

मैंने पूरे ग्रहण को हटा दिया है ... server.core सामग्री और यह भी काम किया। – user435421

3

सबसे अधिक संभावना त्रुटि XML फ़ाइल के शुरू में UTF-8BOM द्वारा उत्पन्न की गई - Notepad जैसे अनुप्रयोगों डालता है फ़ाइल की शुरुआत और जावा धाराओं पर कि स्वचालित रूप से नहीं संभाल सकते हैं। आपका XML सही है, लेकिन फ़ाइल UTF-8 एनकोडेड नहीं है। मैंने इसे पहले देखा है .. एक्सएमएल को इस फोरम से टेक्स्ट एडिटर में कॉपी और पेस्ट करने का प्रयास करें और इसे सेव करें। यह भी सुनिश्चित करें कि आप टेक्स्ट एडिटर वास्तव में UTF-8 में बचत कर रहे हैं।

इसके अलावा, Spring ठीक काम के बिना किसी भी <?xml ... > घोषणा इसलिए आगे बढ़ें और DTD घोषणा और शुरू करने element के बीच टिप्पणी को हटा देगा। UTF-8 घोषणा हटाएं। XMLJava में एन्कोडेड Spring के लिए विशिष्ट नहीं हैं।

+0

सुझावों के लिए धन्यवाद लेकिन वे काम नहीं कर पाए। – rimsky

1

मेरे मामले में यह त्रुटि तब हुई जब मुझे मुख्य श्रेणी (@SpringBootAplication के साथ एनोटेटेड वर्ग) का नाम बदल दिया गया, वसंतबूट एप्लिकेशन के नाम पर। मेरा मतलब यह नहीं होगा कि यह हमेशा होगा लेकिन एसटीएस 3.8.4 में इस वर्ग फ़ाइल का नाम बदलने के बाद मुझे गलती से यह त्रुटि मिली।

इस समस्या को हल करने के लिए, मैंने आईडीई बंद कर दिया, प्रोजेक्ट फ़ोल्डर पर नेविगेट किया और .springBeans फ़ाइल हटा दी। आईडीई को फिर से खोलने के बाद, यह त्रुटि चली गई और मेरा आईडीई अब इस बारे में शिकायत नहीं करता है।

+1

+1 यही मेरी मदद करता है। वसंत सेम फ़ाइल को हटाना, परियोजना की सफाई करना, इसे बंद करना और इसे खोलना। – Calebj