【问题标题】:Running Jar does not use jars from lib/* when packaged with mvn clean package使用 mvn clean package 打包时,运行 Jar 不使用来自 lib/* 的 jar
【发布时间】:2015-04-25 03:11:26
【问题描述】:

我有spring-boot应用,先打包成jar 使用

mvn clean package

我正在尝试以

的身份运行它
java -jar target/bootstep-0.0.1-SNAPSHOT.jar

但由于以下错误而失败。

2015-04-24 16:06:45.425  INFO 27324 --- [ost-startStop-1] c.s.j.api.core.PackagesResourceConfig    : Scanning for root resource and provider classes in the packages:
  com.netflix.discovery
  com.netflix.eureka
2015-04-24 16:06:45.470 ERROR 27324 --- [ost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/]       : Exception starting filter servletContainer

com.sun.jersey.core.spi.scanning.ScannerException: IO error when scanning jar 
..
..
    at java.lang.Thread.run(Unknown Source)
Caused by: java.io.FileNotFoundException: C:\springbootproject\target\bootstep-0.0.1-SNAPSHOT.jar!\lib\eureka-client-1.1.147.jar (The system cannot find the path specified)
    at java.io.FileInputStream.open0(Native Method)
    at java.io.FileInputStream.open(Unknown Source)
    at java.io.FileInputStream.<init>(Unknown Source)
    at java.io.FileInputStream.<init>(Unknown Source)
    at sun.net.www.protocol.file.FileURLConnection.connect(Unknown Source)
    at sun.net.www.protocol.file.FileURLConnection.getInputStream(Unknown Source)
    at java.net.URL.openStream(Unknown Source)
    at com.sun.jersey.core.spi.scanning.uri.JarZipSchemeScanner.closing(JarZipSchemeScanner.java:123)
    at com.sun.jersey.core.spi.scanning.uri.JarZipSchemeScanner.scan(JarZipSchemeScanner.java:75)

jar 文件 eureka-client-1.1.147.jar 存在于 jar 内的 lib 文件夹中,并且 MANIFEST.MF 也有它的条目。

请提出建议。

【问题讨论】:

    标签: spring spring-boot maven-3 netflix netflix-eureka


    【解决方案1】:

    问题是由于 Jersey 的限制 - 它无法处理嵌套的 JAR 文件。您需要将 Boot 配置为在您的应用启动时自动解压缩任何包含 JAX-RS 资源的 JAR,例如:

    <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
        <configuration>
            <requiresUnpack>
                <dependency>
                    <groupId>com.netflix.eureka</groupId>
                    <artifactId>eureka-core</artifactId>
                </dependency>
                <dependency>
                    <groupId>com.netflix.eureka</groupId>
                    <artifactId>eureka-client</artifactId>
                </dependency>
            </requiresUnpack>
        </configuration>
    </plugin>
    

    【讨论】:

      猜你喜欢
      • 2019-05-07
      • 2021-11-28
      • 2014-12-17
      • 2016-05-04
      • 2018-02-12
      • 2013-05-12
      • 1970-01-01
      • 2021-04-23
      • 2022-08-13
      相关资源
      最近更新 更多