我在windows8 64位和windows vista 32位上使用eclipse luna。它也是同样的问题。我的程序在eclipse IDE中运行良好,但在编译时我得到了这个例外:
c:\ users \ Preben \ Desktop \ test \ src \ resource \ default.bws(找不到路径)
其中'test'是桌面上的文件夹,'default.bws'是要处理的文件。
'resource'文件夹也作为projects bin文件夹中的子文件夹存在。
在.classpath文件中这行'classpathentry kind =“src”path =“src”/'。
在eclipse'project-> properties->标签'Source'中的Java Build Path'是'projectname / src'行。
我不时用Google搜索数小时才找到解决方案。有人能指出我正确的方向吗?
答案 0 :(得分:1)
只要可以从类路径访问该文件,您就可以使用classLoader轻松获取它,而不是使用绝对路径(这总是一个坏主意)
=中的InputStream 。ClassPathTest.class.getClassLoader()的getResourceAsStream(" default.bws&#34);
答案 1 :(得分:0)
“编译时我得到此异常”是否意味着从命令行执行编译程序时会导致错误?
如果是这样,我怀疑它是如何在Windows中指定路径,并可能建议:
答案 2 :(得分:0)
总之,我发现在连接资源时,在文件地址中使用正斜杠非常重要:
public class TestOfForwardAndBackwardSlashes {
/**
* Eclipse Luna and Windows 8.1: Test use of forward and backward slashes.
* Conclusion: Use forward slashes for resources.
*/
public TestOfForwardAndBackwardSlashes() {
try {
InputStream in = this.getClass().getClassLoader()
// Forward slashes ok both in IDE and when compiled
.getResourceAsStream("resource/default.bws");
// Backward slashes only ok in IDE
// .getResourceAsStream("resource\\default.bws");
OutputStream out = new FileOutputStream(new File(
// Forward slashes ok both in IDE and when compiled
"C:/test/default.bws")); // Ok both in IDE and compiled
// Backward slashes ok both in IDE and when compiled
// "C:\\test\\default.bws"));
byte[] buffer = new byte[1024];
int bytesRead = 0;
while ((bytesRead = in.read(buffer)) != -1) {
out.write(buffer, 0, bytesRead);
}
in.close();
out.close();
System.out.println("File copied.");
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (NullPointerException e) {
e.printStackTrace();
} catch (IndexOutOfBoundsException e) {
e.printStackTrace();
}
}
}