为什么我的pom.xml文件第一行显示Unknown error?

143
在Eclipse IDE中的pom.xml文件的第1行出现未知错误。昨天还能够正常工作,但在从主分支更新并解决合并冲突后,突然出现了“未知错误”。除了我之外,我的团队成员都没有遇到这个问题。我也更改了工作区域,删除了缓存,但还是没有解决。
我正在为该项目使用h2数据库,虽然在data.sql中插入值,但它不会拾取任何值并将其插入h2 DB表中。在此问题之前,一切都正常。我觉得这可能是由于pom.xml文件中的问题,但我不确定。请帮忙解决。
我已删除现有项目并从主分支获取了最新代码。之后删除了包括仓库文件夹在内的用户下的.m2文件夹。我进行了项目更新并启用了强制更新快照/发布、maven清理和maven构建。但仍未解决问题。

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>com.abc.roster</groupId>
    <artifactId>spring-boot-roster-app</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>
    <name>spring-boot-roster-app</name>
    <description>Demo project for Spring Boot Roster</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.0.BUILD-SNAPSHOT</version>
        <relativePath /> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
        <!-- <start-class>com.infosys.roster.SpringBootRosterAppApplication</start-class> -->
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>
        <!--encryption lib -->
        <dependency>
            <groupId>org.jasypt</groupId>
            <artifactId>jasypt</artifactId>
            <version>1.9.2</version>
        </dependency>

        <dependency>
            <groupId>org.jasypt</groupId>
            <artifactId>jasypt-springsecurity3</artifactId>
            <version>1.9.0</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-rest</artifactId>
        </dependency>

        <dependency>
            <groupId>com.h2database</groupId>
            <artifactId>h2</artifactId>
            <scope>runtime</scope>

        </dependency>


<!--        <dependency> -->
<!--         <groupId>org.hibernate</groupId> -->
<!--         <artifactId>hibernate-core</artifactId> -->
<!--         <version>5.2.10.Final</version> -->
<!--   </dependency> -->

        <!-- <dependency> -->
        <!-- <groupId>io.springfox</groupId> -->
        <!-- <artifactId>springfox-swagger2</artifactId> -->
        <!-- <version>2.7.0</version> -->
        <!-- <scope>compile</scope> -->
        <!-- </dependency> -->


        <!-- <dependency> -->
        <!-- <groupId>io.springfox</groupId> -->
        <!-- <artifactId>springfox-swagger-ui</artifactId> -->
        <!-- <version>2.7.0</version> -->
        <!-- <scope>compile</scope> -->
        <!-- </dependency> -->

        <!-- <dependency> -->
        <!-- <groupId>io.springfox</groupId> -->
        <!-- <artifactId>springfox-data-rest</artifactId> -->
        <!-- <version>2.7.0</version> -->
        <!-- </dependency> -->
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

    <repositories>
        <repository>
            <id>spring-snapshots</id>
            <name>Spring Snapshots</name>
            <url>https://repo.spring.io/snapshot</url>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </repository>
        <repository>
            <id>spring-milestones</id>
            <name>Spring Milestones</name>
            <url>https://repo.spring.io/milestone</url>
        </repository>
    </repositories>
    <pluginRepositories>
        <pluginRepository>
            <id>spring-snapshots</id>
            <name>Spring Snapshots</name>
            <url>https://repo.spring.io/snapshot</url>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </pluginRepository>
        <pluginRepository>
            <id>spring-milestones</id>
            <name>Spring Milestones</name>
            <url>https://repo.spring.io/milestone</url>
        </pluginRepository>
    </pluginRepositories>

</project> 

应用程序属性文件

server.port=
spring.h2.console.path=/h2
spring.h2.console.enabled=true

spring.datasource.url=


spring.datasource.username=
spring.datasource.password=
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.platform=h2
spring.datasource.initialization-mode=always

spring.jpa.hibernate.ddl-auto=update
spring.datasource.continue-on-error=true

spring.jpa.show-sql=true
spring.jpa.properties.hibernate.format_sql=false

spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.H2Dialect

应该在pom.xml中删除未知错误,并且我必须能够在H2数据库中填充值。


你是说没有其他人遇到同一个pom文件的问题吗? - Joakim Danielson
更新相关的错误日志。 - vels4j
你在使用IntelliJ吗?这可能有点冒险,但我建议先执行maven->clean,然后再执行maven->install。有时候IntelliJ会保留旧的/部分构建文件。尽管maven->install也会执行clean操作,但单独执行clean操作仍然很重要。 - user1884155
1
我遇到了完全相同的问题。我从http://start.spring.io创建了几个新的Spring Boot项目,并将这些项目导入Spring Tool Suite后,在我的pom.xml文件的第一行上出现了“未知错误”。这只是本周开始出现的问题。 - Stephen
1
@Stephen,你还遇到这个问题吗?我已经通过将<version> 2.2.0.BUILD-SNAPSHOT </version>更改为<version> 2.1.4.BUILD-SNAPSHOT </version>来解决了。 - Shravani
显示剩余11条评论
21个回答

186

10
最新版的Eclipse(2019-03)也出现了同样的问题。根据你的建议,将maven-jar-plugin从3.1.2更改为3.1.1解决了这个问题。非常感谢。 - Miklos Krivan
6
过时的答案是解决我的问题的方法。 - Del Pedro
1
仅供记录,我的问题是通过升级mavenarchiver插件解决的。 - Matthias
3
安装了Maven Archiver插件的M2E连接器后,重新启动Maven并执行Maven -->更新项目-->强制更新快照。 - ASharma7
1
为MavenArchiver安装最新的M2E连接器解决了我的问题。 - Ehsan Waris
显示剩余2条评论

51
将3.1.1添加到以下属性中,然后修复问题。
<properties>
        <java.version>1.8</java.version>
        <maven-jar-plugin.version>3.1.1</maven-jar-plugin.version>
</properties>

只需更新项目 => 右键点击 => Maven => 更新项目


这个问题似乎出现在maven-jar-plugin 3.1.2和3.2.0版本中。 - Jean-Christophe
是的,但是3.1.1版本运行良好,所以我们可以使用它。 - Sadina Khatun
3.2.2 仍然显示错误。对我来说,最新的没有错误的版本是3.1.1。 - cogitoboy

36

对于我来说,我更改了pom.xml的父标签并解决了这个问题 将2.1.5更改为2.1.4,然后运行Maven->更新项目


2
同样的问题!我仍然不确定在Spring父POM中是什么导致了这个问题,自从2.1.5版本以来。 - light_303
@fsuwailih 谢谢,这个方法有效。但我在想为什么它只对一些人有效而对其他人无效。 - Shravani
这个解决方案真的有效!我将版本从2.1.6更改为2.1.4。但是为什么后续版本会导致该错误呢? - Arijit Basu

23

根据@Shravani的建议,在我的pom.xml文件中,我将<version>区域中的版本号从如下内容进行了更改:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.5.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>

到这个:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.4.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>

然后我右键单击项目,选择'Maven -> Update project...'。这样问题就解决了。


唯一正确的答案。 - Shashi Ranjan

15

您需要升级m2e连接器,这是一个已知的错误,但有解决方案:

  1. 在Eclipse中点击“帮助”>“安装新软件…”

  2. 出现一个窗口。在“安装”窗口中:

    2a. 在“Work with”输入框中输入下一个站点位置,然后按Enter键 https://download.eclipse.org/m2e-wtp/releases/1.4/

    2b. 在“名称”输入框中会显示很多信息。选中所有项目

    2c. 单击“下一步”按钮。

完成安装并重新启动Eclipse。


1
我发现这些指令是实施解决方案的最清晰路径,每个人都说这是根本原因问题,需要升级这个连接器。另外,它起作用了。: ^) - rich p

13

这对我起作用了。 - John Eipe

4

我通过点击 帮助 > 检查更新 来更新Spring Tool Suits。


2

只需在pom.xml的properties标签中添加以下Maven Jar版本:

<maven-jar-plugin.version>3.1.1</maven-jar-plugin.version>

然后按照以下步骤操作:

第一步:mvn clean

第二步:更新项目

问题解决了!你也应该试一下 :)


非常有帮助!我在Java版本下面添加了以下内容:<java.version>1.8</java.version>,然后更新了项目并在STS上进行了刷新,它完美地运行了。 - mabt

1

我也遇到了同样的问题,来自Spring Starter演示的原始代码在第一行上给出了未知错误:

<?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>
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.6.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>
...

将2.1.6.RELEASE的版本仅更改为2.1.4.RELEASE即可解决问题。


1

虽然我无法重现您的错误(因为您的团队成员也没有),但我有一个建议,可能会对您有所帮助。

您听说过字节顺序标记吗?由于它出现在第一行,它很可能是您遇到问题的原因。也许您在某个地方更改了设置,从而导致错误。我认为维基百科文章中的这句话特别相关:

BOM的使用是可选的。它的存在会干扰那些不期望在文件开头处理非ASCII字节但可以处理文本流的UTF-8软件的使用。


更改父标签版本后,它神奇地工作了。 - Shravani

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接