Sprint Tool Suite(eclipse)の使用を開始し、「プロローグでコンテンツが許可されていません」という私のmavenプロジェクトのjavaファイルでこのエラーが発生しました。これにより、クラスがコンパイルされるのを防ぐことができます(これは、最小のSpringBootApplicationクラスです)。Javaファイル:プロローグで許可されていないコンテンツ
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解析エラーであることを確認しました。私は3つのXMLファイルを更新していましたが、16進エディタで<?xml
の前に見えない文字は見えませんでした。それらはすべてUTF-8エンコーディングを使用するように指定されており、偶発的なUTF-16エンコーディングを示す0バイトが交互に表示されません。行末は一貫しているように見えます(改行のみ)。
興味深いことに、「maven clean install」でコンパイルエラーなしでビルドされています。私はJavaファイルにも特殊文字は見当たらないが、eclipseはファイルが問題だと私に伝え、それは春の豆の問題だ。エラーメッセージは、packageステートメントの最初の行に表示されます。
根本的な問題は何ですか?または私はこれをどのように解決できますか?
更新 要求されたとして、ここに私の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
を使用してすべての目に見えない文字を削除した 、目に見えない文字はありませんでした。これは、16進エディタで見たものを確認します。
2つの質問があります。なぜ、エラーが.javaファイルではなく.javaファイルに表示されるのですか? XMLファイルですか?なぜこれは日食にのみ問題であり、メイプルではないのですか?
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)
更新使用して<?xml
前に、私は文字で私のワークスペースでいくつかの日食で生成されたXMLファイルを見つけた3 :
日食ログは、(.xmlファイルを示します)、このメッセージを表示しますgrep -ERl '^[^=]+<\?xml' .
xmlがファイルの行に埋め込まれているeclipseユーザーのprefsを無視します。余分な文字を削除した後、問題は残った。
私はプロジェクトを再起動し、ファイルを一度に1つずつコピーすることができます。
かなり遠いですが、WindowsからUnixへの改行に関連しているかもしれませんか?これは、誰かがWindows上でファイルを保存し、それをunix上で開いた場合に起こります。 dos2unixを実行して修正することができます。 –
[Eclipseコンテンツはプロローグで許可されていません](http://stackoverflow.com/questions/5445143/eclipse-content-is-not-allowed-in-prolog)をチェックしましたか? –
@Elliott Frisch私はpom.xmlを投稿しました – rimsky