另一个 Java 类路径问题
Another Java classpath issue
我使用 Maven 阴影插件构建可执行 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\*
- 甚至将 app.properties 放在与 app.jar
相同的路径中
如您所见,路径分隔符,我使用 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
用法。
您不能同时使用 -cp
和 -jar
选项。
如果您使用 -jar
那么您已经在清单文件中设置了 classpath。 More details.
如果您想使用 -cp
,则必须通过指定 class 名称来 运行 申请。 Details.
我使用 Maven 阴影插件构建可执行 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\*
- 甚至将 app.properties 放在与 app.jar 相同的路径中
如您所见,路径分隔符,我使用 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
用法。
您不能同时使用 -cp
和 -jar
选项。
如果您使用 -jar
那么您已经在清单文件中设置了 classpath。 More details.
如果您想使用 -cp
,则必须通过指定 class 名称来 运行 申请。 Details.