【问题标题】:spring boot properties launcher unable to usespring boot 属性启动器无法使用
【发布时间】:2014-02-14 20:34:00
【问题描述】:

我正在尝试使用 Spring Boot 属性启动器

<plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <configuration>
                <archive>
                    <manifest>
                        <mainClass>org.springframework.boot.loader.PropertiesLauncher</mainClass>
                    </manifest>
                    <manifestEntries>
                        <Start-Class>com.att.hadoop.loader.run.Application</Start-Class>
                    </manifestEntries>
                </archive>
            </configuration>
        </plugin>

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

当我查看清单文件时,它看起来像这样

$ unzip -q -c hdfsloader-0.0.1-SNAPSHOT.jar META-INF/MANIFEST.MF
Manifest-Version: 1.0
Built-By: aq728y
Build-Jdk: 1.7.0_25
Start-Class: org.springframework.boot.loader.PropertiesLauncher
Created-By: Apache Maven 3.1.0
Spring-Boot-Version: 1.0.0.RC1
Main-Class: org.springframework.boot.loader.JarLauncher
Archiver-Version: Plexus Archiver

关于为什么我的 mainclass 和 startclass 错误的任何想法

我想设置为

主类:org.springframework.boot.loader.PropertiesLauncher

开始类:com.att.hadoop.loader.run.Application

【问题讨论】:

    标签: spring-boot


    【解决方案1】:

    spring-boot-maven-plugin 会重写你的 manifest,特别是它管理 Main-ClassStart-Class 条目,所以你必须在那里配置它们(而不是在 jar 插件中)。清单中的Main-Class实际上是由引导插件的layout属性控制的,例如

    <plugin>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-maven-plugin</artifactId>
      <version>1.0.0.RC1</version>
      <configuration>
        <mainClass>${start-class}</mainClass>
        <layout>ZIP</layout>
      </configuration>
      <executions>
        <execution>
          <goals>
            <goal>repackage</goal>
          </goals>
        </execution>
      </executions>
    </plugin>
    

    布局属性默认为基于存档类型(JAR 或 WAR)的猜测。对于PropertiesLauncher,布局为“ZIP”。

    【讨论】:

    • 谢谢..这项工作。我的一个问题是我在 src/main/resources 中有文件,我试图以 ClassPathResoure("classpath:datasource.props") 的形式访问它们。它在 eclipse 中工作,但在构建引导 jar 文件后它找不到这个文件。这些类路径资源如何对应用程序可用
    • 听起来应该可以。 jar 插件的默认设置会将这些文件放在存档的根目录中。你能检查他们在那里吗?你的类路径设置是什么?
    • 资源文件夹中的文件似乎确实在 jar 的根目录中,并且不确定类路径设置。我没有明确指定任何内容。检索文件的代码如下所示 "r = new ClassPathResource(path.replaceFirst("classpath:", ""));"
    • 错误看起来像这样:类路径资源[datasource.properties]无法解析为绝对文件路径,因为它不驻留在文件系统中:jar:file:/opt/data/stage01/ ecdw/foundry/dev/eqfx/aq728y/wars/hdfsloader-0.0.1-SNAPSHOT.jar!/datasource.properties
    • 您的应用程序运行情况如何?它适用于“java -jar”。该错误消息说它正在寻找文件资源(而不是类路径资源),所以我不是 100% 相信我们已经看到了全貌。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-03-24
    • 2020-06-27
    • 1970-01-01
    • 2017-05-03
    • 1970-01-01
    • 2022-08-21
    • 2021-06-01
    相关资源
    最近更新 更多