【问题标题】:Is there a clean way to fix files path issue whether the program is launched from console or Eclipse?无论程序是从控制台还是 Eclipse 启动,是否有一种干净的方法来解决文件路径问题?
【发布时间】:2020-12-28 18:53:47
【问题描述】:

我目前正在处理一个 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 设置而无法运行,那么......

感谢您的回复。

诚挚的。

【问题讨论】:

    标签: java eclipse console


    【解决方案1】:

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

    • 只读数据与类文件一样是应用程序的一部分。想想“用于“州”下拉菜单的美国州列表”、“要在我的用户界面上显示的图标 png”、“包含用于初始化空数据库的一堆 SQL 的文件”等等。李>

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

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

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

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

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

    【讨论】:

    • 是的,如果不明确告诉您的应用程序在哪里查看,则实际上没有办法使这项工作有效,例如通过传递一个参数(它将作为public static void main(String[] args)中的args的一部分到达。
    • 嗯,我的文件属于第二类。由于这是一个经过审查的项目,因此方向是在 src 附近创建数据(似乎我被教导...非常规的 java。甚至构建系统都超出了课程范围!)感谢英特尔。在第一种情况下,使用带有 String fileName 参数的方法,然后用它创建输入流是不好的?我通常先做javac Main.java然后java Main,所以我想在javac之后,java src/Main就可以了。
    猜你喜欢
    • 1970-01-01
    • 2011-06-25
    • 1970-01-01
    • 1970-01-01
    • 2015-09-19
    • 1970-01-01
    • 2022-06-15
    • 2011-09-07
    • 1970-01-01
    相关资源
    最近更新 更多