2

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

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

4

3 回答 3

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 的伙伴们怎么说..

于 2012-07-11T21:30:10.683 回答
0

是同一个操作系统吗?相同的文件名?根据给出的消息,文件名似乎有问题。

于 2012-07-11T19:02:21.980 回答
0

在 catch 块中,您应该添加以下内容:

System.err.println(new File(inFileName).getAbsolutePath());
于 2012-07-11T19:05:55.937 回答