ele*_*ect 7 java linux windows getresponse
我有问题,这个电话
URL fileURL = getClass().getResource(resourcePath);
适用于 Windows (7 64b) 但不适用于返回 null 的 linux (Ubuntu 13.10 64b)。
为什么?文件在那里,字符串如下(相对路径)
String resourcePath = "/tut01/shaders/vertex_shader.glsl"
Run Code Online (Sandbox Code Playgroud)
两个文件都在我家
编辑:该项目是新克隆的,我忘了清理和构建,抱歉..所以现在它找到了它们。然而,这很奇怪,因为即使我修改了 vertex_shader.glsl,我的程序也将始终引用旧版本,每次编辑它时,我都需要执行清理和构建才能看到更改...为什么?在 Windows 上,我不必这样做..
您的资源路径以 a 开头/
,因此是绝对路径。如果您希望资源路径是相对的,则必须省略第一个/
.
来自 Javadoc Class.getResource(String name)
:
如果名称以“/”(“\u002f”) 开头,则资源的绝对名称是“/”后面的名称部分。
否则,绝对名称采用以下形式:modified_package_name/name,其中modified_package_name 是该对象的包名称,其中“/”替换为“.”。('\u002e')。
相对路径是相对于 所返回的类的路径getClass()
。
一个例子:
package org.example;
public class MyClass {
public void foo() {
getClass().getResource("tut01/shaders/vertex_shader.glsl");
}
}
Run Code Online (Sandbox Code Playgroud)
假设编译器将编译后的类文件写入/home/my-project/bin/org/example/MyClass.class
.
getClass().getResource("tut01/shaders/vertex_shader.glsl")
然后会在 中查找该文件/home/my-project/bin/org/example/tut01/shaders/vertex_shader.glsl
。
归档时间: |
|
查看次数: |
9633 次 |
最近记录: |