我的Spring Boot应用程序在从Eclipse IDE中运行时工作正常,但是当我执行一个超级jar时,我得到了异常:
Caused by: java.lang.NumberFormatException: For input string: "${device.port}"
at java.lang.NumberFormatException.forInputString(Unknown Source) ~[na:1.8.0_65]
at java.lang.Integer.parseInt(Unknown Source) ~[na:1.8.0_65]
表示此值:
@Value("${device.port}")
private String port;
不是位于src / main / resources中的.properties文件中设置的值:
device.port=5672
但只是一个字符串“$ {device.port}”,后来解析为Integer。
@PropertySource(“classpath:default.properties”)设置正确,这就是我的main函数的样子:
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
这是我对pom.xml的一部分,它可能对解决我的问题至关重要:
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<executable>true</executable>
<archive>
<manifest>
<mainClass>com.devices.App</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
如何让我的超级jar从.properties文件中读取数据?我相信我一定会错过一些愚蠢的东西。可能我必须在配置中指出我希望我的.properties文件包含在uber jar中。