我使用Maven shade插件来构建可执行jar,当它包含构建中的属性时,它可以正常工作。
但是当我尝试将属性移到单独的文件夹时,它失败了java.io.FileNotFoundException: class path resource [app.properties] cannot be opened because it does not exist
。
我尝试了以下三种方法,但都失败了:
java -cp "properties"
(或".\*;properties\*"
)-jar app.jar
SET CLASSPATH =.\*;properties\*
正如您可以看到路径分隔符,我使用Windows来运行jar。
[更新]
我将阴影配置(仅从<mainClass>
更改为<manifestEntries>
)如下所示,并解决了问题。
<transformer
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<manifestEntries>
<Main-Class>com.lifeshield.reminder.App</Main-Class>
<Class-Path>properties/</Class-Path>
<Build-Number>0.1</Build-Number>
</manifestEntries>
</transformer>
@MarkoŽivanović,感谢您指出-cp
和-jar
用法。
答案 0 :(得分:1)
您不能同时使用-cp
和-jar
选项。
如果您使用-jar
,那么您已在清单文件中设置了classpath。 More details
如果要使用-cp
,则必须通过指定类名来运行应用程序。 Details