Java Windows和Unix计算机之间的Maven生成结果不同

Java Windows和Unix计算机之间的Maven生成结果不同,java,windows,maven,unix,build,Java,Windows,Maven,Unix,Build,我有一个maven项目;我使用maven 3.5.0和以下选项构建它: clean install -Dmaven.test.skip=true -X 我在三台不同的机器上执行maven build: Received [GET /auth-server/v2/api/me HTTP/1.1^M Authorization: Bearer 8631dff0-323a-4058-a55e-505dc65f5f4c^M cache-control: no-cache^M Postman-Token

我有一个maven项目;我使用maven 3.5.0和以下选项构建它:

clean install -Dmaven.test.skip=true -X
我在三台不同的机器上执行maven build:

Received [GET /auth-server/v2/api/me HTTP/1.1^M
Authorization: Bearer 8631dff0-323a-4058-a55e-505dc65f5f4c^M
cache-control: no-cache^M
Postman-Token: f71d256e-4036-4201-889a-36e3782c7bf2^M
User-Agent: PostmanRuntime/7.1.1^M
Accept: */*^M
Host: 192.168.100.185:1998^M
accept-encoding: gzip, deflate^M
Connection: keep-alive^M
^M
]
  • Debian Jessie 8.5
  • Ubuntu 16.04
  • 视窗10
  • 我在所有机器上都使用了maven 3.5.0,但其输出的唯一机器是Windows。Maven设置是相同的

    我使用了一个JAR比较工具来找出差异;只是有一些不可忽视的变化

    为了完全清楚,并且万一这些信息有助于建议解决方案,我想我应该解释一下unix机器maven输出的错误

    maven项目提供了一个RESTAPI。在unix机器中,服务器在每行请求的末尾添加一个DOS字符

    这是在Unix计算机上构建的服务器的日志:

    Received [GET /auth-server/v2/api/me HTTP/1.1^M
    Authorization: Bearer 8631dff0-323a-4058-a55e-505dc65f5f4c^M
    cache-control: no-cache^M
    Postman-Token: f71d256e-4036-4201-889a-36e3782c7bf2^M
    User-Agent: PostmanRuntime/7.1.1^M
    Accept: */*^M
    Host: 192.168.100.185:1998^M
    accept-encoding: gzip, deflate^M
    Connection: keep-alive^M
    ^M
    ]
    
    这是在windows计算机上构建的服务器的日志:

    Received [GET /auth-server/v2/api/me HTTP/1.1
    Authorization: Bearer 8631dff0-323a-4058-a55e-505dc65f5f4c
    cache-control: no-cache
    Postman-Token: f71d256e-4036-4201-889a-36e3782c7bf2
    User-Agent: PostmanRuntime/7.1.1
    Accept: */*
    Host: 192.168.100.185:1998
    accept-encoding: gzip, deflate
    Connection: keep-alive
    
    ]
    
    如您所见,包含
    授权
    字段的行末尾的
    ^M
    字符会更改其值;这使得头值在服务器端无效

    我不希望服务器在请求行末尾添加那些
    ^M
    字符

    关于java,机器之间有什么不同吗?java不是一种跨平台语言吗

    如果有帮助的话,我应该提到开发是在Windows机器上完成的


    在谷歌搜索之后,我发现这对我来说是没有用的

    我不明白当您使用Linux时,预期的行为会失败。@JFMeier,我不希望服务器在请求行末尾添加那些
    ^M
    字符。
    ^M
    表示
    \r:carries return
    字符,并在那里预期。您使用了什么工具来解析http头?请参阅@TaherKhorshidi,服务器不接受
    ^M
    ,身份验证失败。没有工具参与其中;来自同一客户机的请求被发送到服务器,服务器解析该请求。在windows情况下,不添加
    ^M
    字符;由于客户端和请求没有改变,服务器的功能似乎有所不同。