我正在寻找一些我认为不会困难的事情.
我有一个应用程序,我想打包成一个jar,因为我有〜30个依赖关系,我想要能够部署一个文件.
我有一些配置文件 – 一个属性文件和一个spring配置文件,以及我的log4 props文件 – 我想在jar外部.我想我预计,如果我把它们放在与jar相同的目录中,它会在运行时找到它们,但是没有.
在开发过程中,我将这些文件放在eclipse项目的classpath的根目录下,并且应用程序发现它们很好.我觉得我错过了jar / classpath理论的一些关键方面…
所以我想要的是将配置文件和jar放在同一个目录中,并且当我使用标准的java -jar的东西运行它时,应用程序会找到配置文件.
有没有一个简单的方法来实现这一点?
解决方法
@H_403_15@ 我将为后代保留我解决这个问题的办法.我认为我有可能期待java -jar做一些它不做的事情.
如果您使用常规java命令,您可以在类路径中包含该jar,并且最终将与java -jar几乎相同,只有您必须具体命名要使用的类.看起来像这样:
java -cp .:path/to/Jar.jar com.company.package.Class arg1=val1 arg2=val2 ....
有可能你要建立一个脚本来为你启动程序,所以增加的命令行调用的复杂性并没有太多,因为你只会构建一次.
你会看到我包括’.’作为类路径中的第一个项目,这意味着同一目录中与jar相同的任何内容也将包含在类路径中.当然,jar中的一切都包含在类路径中,因为jar本身也在类路径上.
您还将看到,我已经显示了如何仍然可以在命令行中提交args.这是我不确定当我开始,但它按预期工作.
我确信这只是基本的Java部署知识,但是由于某些原因我缺乏这个知识.
我希望这有助于别人.如果有人能够说“不要试图得到-jar的东西 – 只需使用-cp方法”就可以节省很多时间…