【发布时间】:2012-02-09 05:53:49
【问题描述】:
我有一个 JAR 文件,其中包含一个应用程序以及该应用程序的配置文件。应用程序从类路径加载配置文件(使用ClassLoader.getResource()),并使用烘焙到 JAR 文件中的配置文件完全满足其依赖关系。
有时我希望应用程序以稍微不同的配置运行(特别是我想覆盖 JDBC URL 以指向不同的数据库),因此我创建了一个新的配置文件,将其存储在正确的目录结构中(其中表示在类路径条目的目录/config 中),我想做这样的事情:
java -cp new-config:. -jar application.jar
但我无法让类路径在应用程序 JAR 的内容之前有 new-config 路径条目。 JAR 的内容始终是类路径中的第一个内容是硬编码的吗?
【问题讨论】:
-
您是否尝试过将配置放在 de jar 之外,放在相对于 application.jar (../conf/config.jar) 的路径中的自己的 jar 文件中?如果您这样做,我认为您可以在应用程序清单中设置指向该配置 jar 的类路径,并且可以设置更改 config.jar 的新配置。我希望我有更多的时间做一个演示来确认我的答案,但我不能......所以我把它写成评论
-
你的意思是,而不是在 JAR 中?
-
是的,而不是与应用程序放在同一个 jar 中,而是将配置放在第二个 jar 中...
-
谢谢,但这并不真正适用于我的使用 - 我尝试支持的用户使用构建脚本在他们的工作站上创建 JAR,然后手动将其传输到服务器。要求他们传输两个文件将是一个问题。
-
这是一个已知的BUG,目前还没有修复,不能结合-cp和-jar:bugs.sun.com/bugdatabase/view_bug.do?bug_id=4459663
标签: java jar classpath executable-jar