java - 即使在从不同的文件位置导出和运行之后,如何在 java 项目中获取包文件路径
问题描述
从这张图片中,当我将这个类作为 Java 应用程序运行时,它工作得非常好。
我创建了一个可执行的 jar 文件并保存在 Downloads 文件夹中,当我运行 jar 时,我得到了"java.io.FileNotFoundException: /Users/uanem/Downloads/testng.xml (No such file or directory)"
无论我在哪里运行 jar 文件,如何获取我的项目的文件夹路径并引用这个 testng.xml?
解决方案
一个可执行的 jar 没有你从哪里构建它的记忆,所以没有简单的方法可以返回到 testng.xml 文件(为什么你甚至需要它?)
下面我假设 testng 可以在类路径中查找这个文件。(如果您不确定这意味着什么,请考虑学习它——这对于新程序员来说是一个非常常见的问题)。
您可以执行以下一项或多项操作:
在命令行上明确告诉文件的路径。确切的语法取决于 testng 使用的发现机制。您可能必须将其从 args 字符串手动带到调用点。
将下载文件夹添加到在可执行 jar 清单中编码的类路径中。这将不能移植到其他系统,但可能足以供您个人使用。
将文件移动到类路径 (src/java/resources) 中,使其包含在您的可执行 jar 中,并且 testng 可以在那里找到它。
考虑为什么在您的可执行 jar 中需要此功能,如果可能,请删除该功能。然后问题就消失了。
将它放在可执行 jar 旁边并询问 JVM 代码在哪里运行。见https://stackoverflow.com/a/227640/53897
推荐阅读
- git - Git fetch 和 git pull 没有从远程仓库复制文件
- javascript - Passing props back everytime a from is submitted in React
- python - 分离重复列值
- babylonjs - Cannot find module 'babylonjs'
- node.js - 如何防止老练的攻击者知道您的应用在生产环境中由 Express.js 提供支持?
- javascript - How to send a file in array of object to express server?
- c# - 如何将 ADFS 用户添加到 Identity 中的“AspNetUsers”?
- javascript - 在Angular中先前的响应之后执行一个函数
- git - 在 Git 的根提交之前插入一个非空提交?
- r - Is there any R code to repeat a same value for multiple rows?