Tôi mới dùng Spring và bắt đầu sử dụng Sprint Tool Suite (nhật thực) và xem lỗi này trong tệp java trong dự án maven của tôi: "Nội dung không được phép trong prolog". Điều này ngăn cản các lớp biên dịch (mà chỉ là một lớp SpringBootApplication tối thiểu) trong nhật thực.Tệp Java: Nội dung không được phép trong prolog
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);
}
}
Tôi đã xóa web và thấy rằng trong hầu hết mọi tham chiếu, đây là lỗi phân tích cú pháp XML. Tôi đã cập nhật ba tệp XML nhưng không thấy bất kỳ ký tự vô hình nào trước <?xml
trong trình chỉnh sửa hex. Tất cả chúng đều chỉ định sử dụng mã hóa UTF-8 và tôi không thấy xen kẽ 0 byte cho biết mã hóa UTF-16 ngẫu nhiên. Các kết thúc dòng có vẻ phù hợp (chỉ là một nguồn cấp dữ liệu dòng).
Thật thú vị, nó xây dựng mà không có lỗi trình biên dịch với "cài đặt sạch maven". Tôi không thấy bất kỳ ký tự đặc biệt nào trong tệp java, nhưng nhật thực cho tôi biết rằng tệp đó là vấn đề và đó là vấn đề về đậu mùa xuân. Thông báo lỗi hiển thị trên dòng đầu tiên với câu lệnh gói.
Bất kỳ ý tưởng nào về vấn đề gốc hoặc cách tôi có thể giải quyết vấn đề này?
Cập nhật Theo yêu cầu, đây là tập tin pom.xml của tôi:
<?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>
Cập nhật 2 Tôi đã tìm kiếm thư mục dự án của tôi cho tất cả các file .xml và đã gỡ bỏ tất cả các ký tự vô hình lập trình sử dụng perl -i -pe 's/[^\x20-\x7f\x0A\x09]//g' fileName
, nhưng không có nhân vật vô hình. Điều này xác nhận những gì tôi thấy trong trình soạn thảo hex.
Hai câu hỏi cần lưu ý: Tại sao lỗi hiển thị trong tệp .java thay vì a. tệp xml? Tại sao đây chỉ là một vấn đề cho nhật thực và không phải là maven?
Nhật ký thực hiện thông điệp này (mà chỉ một file .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)
Cập nhật 3 tôi đã tìm thấy một số file xml nhật thực tạo ra trong không gian làm việc của tôi với các nhân vật trước khi sử dụng <?xml
grep -ERl '^[^=]+<\?xml' .
để bỏ qua một số prefs người dùng nhật thực có xml được nhúng trong các dòng của tệp. Sau khi loại bỏ các nhân vật phụ, vấn đề vẫn còn mặc dù.
Hãy nghĩ rằng tôi có thể khởi động lại dự án và sao chép từng tệp một.
Khá xa vời, nhưng có thể nó liên quan đến ngắt dòng từ Windows sang Unix? Điều này có thể xảy ra nếu ai đó đã lưu tệp trên Windows và sau đó mở tệp trên Unix. Bạn có thể sửa nó bằng cách chạy dos2unix. –
Bạn đã kiểm tra [Nội dung Eclipse không được phép trong prolog] (http://stackoverflow.com/questions/5445143/eclipse-content-is-not-allowed-in-prolog)? –
@Elliott Frisch Tôi đã đăng pom.xml của mình – rimsky