另一个Java类路径问题

时间:2015-03-13 12:56:20

标签: java classpath

我使用Maven shade插件来构建可执行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用法。

1 个答案:

答案 0 :(得分:1)

您不能同时使用-cp-jar选项。

如果您使用-jar,那么您已在清单文件中设置了classpath。 More details

如果要使用-cp,则必须通过指定类名来运行应用程序。 Details