Java在Eclipse中运行时成功打开文件,但在Netbeans中不能

时间:2012-07-11 19:00:15

标签: java netbeans file-io

我一直在Eclipse中开展一个项目,要求我打开一个文件。它按预期工作。我将我的项目导入Netbeans只是为了检查它,但是在运行时,无法打开该文件。我认为截图在这种情况下最有用:

screenshot of the problem in Netbeans

知道问题是什么吗?我甚至在项目属性中明确指定了运行目录,但仍然无效。

其他信息:

  • 我记得我在Eclipse中使用JDK 1.6但Netbeans使用的是JDK 1.7 - 文件路径解析在两个平台之间的处理方式不同吗?

另外,正如一些用户所建议的那样,我在我的catch块中添加了:

System.err.println(new File(inFileName).getAbsolutePath();

应该返回:

C:\Users\David\Dev\projects\Autocuration\pearltrees_export_02-07-2012.rdf

3 个答案:

答案 0 :(得分:1)

尝试手动构建URI后,

System.out.println(new File(System.getProperty("user.dir")).toURI().resolve(inFileName));

我遇到以下异常:

Exception in thread "main" java.lang.IllegalArgumentException: Illegal character in path at index 32: pearltrees_export_02-07-2012.rdf

考虑到没有第32个字符,我假设printStackTrace方法必须在打印之前修剪从异常消息中获取的字符串。

无论如何,似乎Netbeans使用''(空格)字符作为分隔符来解析Run参数。但是,当它将参数传递给main方法时,它还包括该空间。换句话说,我试图打开:

"pearltrees_export_02-07-2012.rdf "

而不是:

"pearltrees_export_02-07-2012.rdf"

简单修剪参数可以解决问题:

inStream = new FileInputStream(new File(inFileName.trim()));

无论如何,我找不到任何文档说明这是预期的行为,因为它肯定不同于java二进制文件的行为(以及我所知道的任何其他编辑器)。出于这个原因,我认为这是一个错误,我提交了一个错误报告:

http://netbeans.org/bugzilla/show_bug.cgi?id=215429

我想我们会看到Netbeans的研究员们要说些什么..

答案 1 :(得分:0)

是相同的操作系统吗?相同的文件名?根据给出的消息,看起来文件名中存在一些问题。

答案 2 :(得分:0)

在catch块中你应该添加:

System.err.println(new File(inFileName).getAbsolutePath());