问题很可能是您的应用程序正在使用相对路径名。正如@BalusC所说,相对的路径名可能是有问题的。但是,海事组织,他说“你应该永远不要在java.io的东西中使用相对路径”,他走得太远了。
当应用程序使用(例如)FileInputStream(File)构造函数打开文件时,相对路径名将相对于File.getAbsolutePath()的javadoc中描述的过程中的“当前目录”进行解析。
[…] Otherwise this pathname is resolved in a system-dependent way. On UNIX systems, a relative pathname is made absolute by resolving it against the current user directory. On Microsoft Windows systems, a relative pathname is made absolute by resolving it against the current directory of the drive named by the pathname, if any; if not, it is resolved against the current user directory.
所以立即看到,“当前目录”的概念在Windows和UNIX平台上有不同的细微差别。第二个问题是,在纯Java中,您无法确定当前目录是什么,您当然无法使用纯Java对当前JVM进行更改。 (当JVM启动时,“user.dir”系统属性设置为当前目录,但没有任何内容阻止应用程序更改属性,因此您不能完全依赖该应用程序。此外,更改“user.dir”仅更改空路径的解决方式,而不是一般的相对路径。)
那么你应该怎么做呢?
>一个选项是使用绝对路径名来引用文件。这在几乎所有情况下是可靠的,但是如果用户必须输入路径名,则使用绝对路径名可能会有问题,或者
如果您需要避免硬连线(或配置)的绝对路径名。
>第二个选项是使用classpath相对路径名,并相对于应用程序的安装目录定位文件。如果这是您需要做的工作,但如果您需要将文件传递给某些库方法,则会出现问题。如果您试图找到用户的应用程序首选项,它也没有帮助。 (一般来说,将用户偏好放入安装目录是一个错误…)
>第三个选项是相对于你从别的地方得到的绝对目录命名一个文件;例如新文件(System.getProperty(“home.dir”),“foo / bar”);.
>最后一个选择是使用相对的路径名,并假设用户知道当前目录是什么。对于用户从命令行运行的许多应用程序,这是正确的解决方案。
在Eclipse的特殊情况下,有一个简单的解决方案。转到您用于启动应用程序的“运行配置”,打开“参数”选项卡,然后单击“其他”单选按钮。然后输入绝对路径名作为启动应用程序的工作目录。当启动子JVM时,它将具有指定的工作目录作为其当前目录。
今天的文章eclipse不能运行java文件_Java在运行Eclipse时无法找到文件分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/25322.html