另一个 Java 类路径问题

Another Java classpath issue

我使用 Maven 阴影插件构建可执行 jar,当它在构建中包含属性时工作正常。

但是当我试图将属性移出到一个单独的文件夹时,它失败了 java.io.FileNotFoundException: class path resource [app.properties] cannot be opened because it does not exist

以下三种方法我都试过了,都失败了:

  1. java -cp "properties"(或".\*;properties\*"-jar app.jar
  2. SET CLASSPATH =.\*;properties\*
  3. 甚至将 app.properties 放在与 app.jar
  4. 相同的路径中

如您所见,路径分隔符,我使用 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.