无论程序是从控制台还是从 Eclipse 启动,是否有一种干净的方法来修复文件路径问题?

Is there a clean way to fix files path issue whether the program is launched from console or Eclipse?

我目前正在处理一个 Java 项目,在该项目中我必须打开存储在 src 旁边的数据目录中的文件。

当我从 Eclipse 启动我的程序时,要访问这些文件:我键入 "data/fileName" 而当我使用控制台时,我必须键入 "../data/fileName".

(我无法从项目目录执行 java src/Main 并收到错误:

Error: Could not find or load main class src.Main.java

Caused by: java.lang.ClassNotFoundException: src.Main.java)

有没有办法让我的程序 运行 在控制台和 Eclipse 上都可用?

给出一些背景信息:我通常只打算在 Eclipse 上 运行,但我在从 Eclipse 启动 nano 时遇到了问题($TERM 变量,也将管道重定向到 dev/tty),所以控制台执行已成为一个要求。

我无法更改我的 Eclipse 配置,因为该项目不会 运行 在我的计算机上,如果由于默认 Eclipse 设置而不会 运行,那么...

感谢您的回复。

亲切地

是的。不要把那些文件放在那里。有两大类:

  • 只读数据,与 class 文件一样,都是您应用程序的一部分。想想“'state' 下拉列表中的美国州列表”、'an icon png to be shown on my user interface'、'a file containing a bunch of SQL to be used to initialize an empty database' 等等。

为此,正确的方法是 YourClass.class.getResourceAsStream("foo.txt"),这将为您提供一个输入流,用于读取文件“foo.txt”,该文件与“[=39=”位于同一位置]“ 是。例如,即使它在 jar 文件中。

这确实意味着作为构建的一部分,这些文件需要放在 jar 中。 eclipse 的有限构建系统可以做到这一点。如果您升级为程序员并使用构建系统(您应该在这里升级),请将它们放在 src/main/resources 中,构建系统应该会处理它。

  • 或者,第二类:用户应该编辑的文件,或者您的应用需要修改的文件。

这些不会放在您的 jar 文件附近;可执行和用户可编辑的东西应该彼此相距甚远。这些应该在用户主目录中,您可以使用 System.getProperty("user.home").

获取它

注意 运行 java 东西,'src' 根本不应该是故事的一部分,java 不能 运行 来源文件,只有 class 个文件。此外,参数不是目录,而是 class 名称。 java -cp path/to/your/app.jar com.foo.pkg.YourClass 是您 运行 java 代码的方式,而不是 java src/Main