当前位置: 首页 > 面试题库 >

Java -jar:访问外部配置文件

权玉泽
2023-03-14
问题内容

我想做一些我认为并不困难的事情。

我有一个要打包为jar的应用程序,因为我有大约30个依赖项,并且我希望能够部署一个文件。

我有一些配置文件-一个属性文件和一个spring配置文件,以及我的log4 props文件-
我想在jar外部使用。我想我希望,如果我将它们与jar放在同一目录中,它将在运行时找到它们,但事实并非如此。

在开发过程中,我将这些文件放在html" target="_blank">eclipse项目的类路径的根目录下,应用程序发现它们很好。我觉得我缺少了jar /类路径理论的某些关键方面…

所以我想要的是能够将配置文件和jar文件放在同一目录中,并让我在使用标准java -jar东西运行该应用程序时找到该配置文件。

有没有简单的方法可以做到这一点?


问题答案:

我将为后代保留我对这个问题的解决方案。

我认为我可能期望java -jar做它不做的事情。

如果使用常规的Java命令,则可以在类路径中包含jar,最后得到与java -jar几乎相同的东西,只需要专门命名要使用的类即可。看起来像这样:

java -cp .:path/to/Jar.jar com.company.package.Class arg1=val1 arg2=val2 ....

无论如何,您都有可能要构建一个脚本来为您启动该程序,因此命令行调用所增加的复杂性实际上并没有太多,因为您无论如何都只会构建一次。

您会看到我包括“。”
作为类路径上的第一项,这意味着与jar相同目录中的任何内容也将包含在类路径中。当然,罐子内部的所有内容也都包含在类路径中,因为罐子本身也位于类路径中。

您还将看到我已经展示了如何仍然可以在命令行上传递args。这是我不确定什么时候开始的,但是可以正常使用。

我确定这只是基本的Java部署知识,但是由于某种原因我缺乏它。

我希望这可以帮助其他人。如果有人能够说“不要费心尝试使-jar事情正常工作-只需使用-cp方法”,那肯定会为我节省很多时间。



 类似资料:
  • 我有一个标准的Spring靴项目。 我有一个/src/main/resources文件夹,其中有几个配置文件。 我怎样才能用Gradle做到这一点呢?

  • 我开发了Spring Boot 2.2.1应用程序。我有多个配置文件(应用程序-{provile}. yml)并使用liquibase自动迁移数据库。一切工作几乎正常(如果可以说Java,哈哈)。但是在正式生产环境中,我必须将配置文件作为外部yml文件从我们这边传递。 我正在执行以下shell以启动应用程序: 应用程序正在启动并且配置正确应用,除了liquibase。Liquibase使用类路径进

  • 问题内容: 我正在使用FlatPack来分析和加载平面文件中的数据。这需要加载一个配置文件,该文件存储平面文件各列的映射。 我有一个常量来定义映射文件的位置: 我有一个parse(File dataFile)方法实际上执行解析: 当我罐子了一切并运行它作为一个罐子-它炸弹出来了。该文件虽然在罐子里。 我该怎么办? 我已经看过这个问题以及关于访问jars中文件的问题,他们都建议暂时提取文件。我不想这

  • 我有一个罐子x,它有一个类 现在在一个完全不同的项目中,我添加了这个jar作为依赖项。 并导入这个类,如: } 基本上,我在项目中使用了jar的Spring配置文件。 但当我运行我的应用程序时,我会出现以下错误: 信息:java。伊奥。FileNotFoundException:无法打开类路径资源[WEB-INF/assembly/appconfig.xml],因为它不存在。springframe

  • 说我已经试过了。java在~/jar中/ 然后我输入: 我想将这个类导入到~/src/中的另一个源文件中: 我尝试了两种方法: 1. 编译期间可以,但当我尝试运行它时,会出现错误: 2. 我尝试在我的. bashrc和. profile中包含以下命令(我没有.bash_profile或.bash_login): 和: 但这一次,它仍然是错误的: 我应该如何包含外部 jar 文件? 编辑:整个项目只

  • 问题内容: 我正在整理一个.jar文件。我想创建一个非常简单的.properties文件,其中包含诸如用户名和其他内容之类的可配置内容,以便他们可以手动编辑,而不必包括GUI编辑器。 我想做的是能够按此顺序搜索: 指定的属性文件() 当前目录(调用Java的目录)中的MyApp.properties 用户目录中的MyApp.properties(user.home系统属性?) 存储应用程序.jar