Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 静态上下文中的getClass().getResource()_Java_Url_Static_Getresource - Fatal编程技术网

Java 静态上下文中的getClass().getResource()

Java 静态上下文中的getClass().getResource(),java,url,static,getresource,Java,Url,Static,Getresource,我正在尝试使用以下代码从静态方法获取资源(image.png,与此代码在同一个包中): import java.net.*; public class StaticResource { public static void main(String[] args) { URL u = StaticResource.class.getClass().getResource("image.png"); System.out.println(u); }

我正在尝试使用以下代码从静态方法获取资源(image.png,与此代码在同一个包中):

import java.net.*;

public class StaticResource {

    public static void main(String[] args) {
        URL u = StaticResource.class.getClass().getResource("image.png");
        System.out.println(u);
    }

}
输出仅为“null”

我还尝试了
StaticResource.class.getClass().getClassLoader().getResource(“image.png”)
,它抛出一个
NullPointerException

我见过其他解决方案,我做错了什么


始终尝试将资源放在JAVA代码之外,以使其他包的类更易于管理和重用

你可以试试任何一种

// Read from same package 
URL url = StaticResource.class.getResource("c.png");

// Read from same package 
InputStream in = StaticResource.class.getResourceAsStream("c.png");

// Read from absolute path
File file = new File("E:/SOFTWARE/TrainPIS/res/drawable/c.png");

// Read from images folder parallel to src in your project
File file = new File("images/c.jpg");

// Read from src/images folder
URL url = StaticResource.class.getResource("/images/c.png")

// Read from src/images folder
InputStream in = StaticResource.class.getResourceAsStream("/images/c.png")
删除“.getClass()”部分。 只用


你犯了什么错误?是否确实在类路径中有图像?ClassName.class与SomeClassReference.getClass()完全相同。您正在获取StaticResource类的类。@jgitter它要么输出null,要么抛出NullPointerException。不要以这种方式使用。为什么要使用
getClassLoader()
?只需使用
StaticResource.class.getResource(“image.png”)
始终尝试将资源放在JAVA代码之外,以使其他包的类更易于管理和重用。我不了解最后3个-他们似乎对某些项目的结构做出了假设,这可能(或者更确切地说可能不是)应用于其他人的设置。我想尝试将资源保留在包之外。只需创建images文件夹以将所有图像放置在此文件夹中。+1
X.class.getClass()
始终是
class
类,因为所有类都有一种类型的
class
,因为这是由引导加载程序加载的,它几乎没有你想要的资源
URL u = StaticResource.class.getResource("image.png");