Tag: getresource

Class.getResource()和ClassLoader.getResource()之间有什么区别?

我想知道Class.getResource()和ClassLoader.getResource()之间有什么区别? 编辑:我特别想知道是否有任何caching文件/目录级别涉及。 如“在Class版本中caching的目录列表? 以下AFAIK基本上应该做同样的事情,但他们不是: getClass().getResource() getClass().getClassLoader().getResource() 我在摆弄某些报告生成代码时发现了这个问题,这些代码在WEB-INF/classes/从该目录中的现有文件中创build一个新文件。 当使用Class中的方法时,我可以使用getClass().getResource()查找在部署时存在的文件,但是当试图获取新创build的文件时,我收到一个空对象。 浏览目录清楚地显示新文件在那里。 如“/myFile.txt”中的文件名前加斜杠。 另一方面, getResource()的ClassLoader版本find了生成的文件。 从这个经验看来,目录列表正在进行某种caching。 我是对的吗?如果是的话,这是在哪里logging? 从Class.getResource()的API文档 查找具有给定名称的资源。 用于search与给定类关联的资源的规则由类的定义类加载器来实现。 这个方法委托给这个对象的类加载器。 如果此对象由引导类加载器加载,则该方法委托给ClassLoader.getSystemResource(java.lang.String)。 对我来说,这读取“Class.getResource真的调用自己的类加载器的getResource()”。 这和getClass().getClassLoader().getResource() 。 但显然不是。 有人能给我提供一些关于这个问题的启示吗?

如何正确使用ClassLoader.getResources()?

我如何使用ClassLoader.getResources()从我的类path中查找recursion资源? 例如 findMETA-INF “目录”中的所有资源:设想一下类似的东西 getClass().getClassLoader().getResources("META-INF") 不幸的是,这只能检索到这个“目录”的URL 。 所有名为bla.xml资源(recursion) getClass().getClassLoader().getResources("bla.xml") 但是这返回一个空的Enumeration 。 作为一个额外的问题: ClassLoader.getResources()与ClassLoader.getResource()什么不同?

Class.getResource()返回null

我正试图在JPanel上显示图片,但我不断收到错误: java.lang.IllegalArgumentException:input == null! 我不明白发生了什么事。 这是我正在使用的代码: public void actionPerformed(ActionEvent e) { try { Image image=ImageIO.read(getClass().getResource("img/" +num.getText()+".jpg")); Image resized = image.getScaledInstance(200, 200, 100); pictureFrame.setIcon(new ImageIcon(resized)); } catch (Exception ex){ ex.printStackTrace(); } } 这只会导致我得到错误! 堆栈跟踪产生以下内容: Java.lang.IllegalArgumentException: input == null! at javax.imageio.ImageIO.read(ImageIO.java:1362) at work.Item.actionPerformed(Item.java:96) at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995) at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318) at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387) at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242) at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236) at java.awt.Component.processMouseEvent(Component.java:6297) at javax.swing.JComponent.processMouseEvent(JComponent.java:3275) […]

使用getResource()获取资源

我需要在java项目中获取资源图像文件。 我正在做的是: URL url = TestGameTable.class.getClass(). getClassLoader().getResource("unibo.lsb.res/dice.jpg"); 目录结构如下: unibo/ lsb/ res/ dice.jpg test/ …./ /* other packages */ 事实是,我总是得到文件不存在。 我尝试过很多不同的path,但是我无法解决这个问题。 任何提示?

如何列出JAR文件中的文件?

我有这个代码读取目录中的所有文件。 File textFolder = new File("text_directory"); File [] texFiles = textFolder.listFiles( new FileFilter() { public boolean accept( File file ) { return file.getName().endsWith(".txt"); } }); 它工作很好。 它用所有以“text_directory”目录中的“.txt”结尾的文件填充数组。 如何在 JAR文件中以类似的方式读取目录的内容? 所以我真正想做的是列出我的JAR文件中的所有图像,所以我可以加载它们: ImageIO.read(this.getClass().getResource("CompanyLogo.png")); (这是因为“CompanyLogo”是“硬编码”,但JAR文件中的图像数量可以是10到200个可变长度)。 编辑 所以我想我的主要问题是:如何知道我的主要类的JAR文件的名称 ? 当然我可以使用java.util.Zip来读取它。 我的结构是这样的: 他们是这样的: my.jar!/Main.class my.jar!/Aux.class my.jar!/Other.class my.jar!http://img.dovov.comimage01.png my.jar!http://img.dovov.comimage02a.png my.jar!http://img.dovov.comimwge034.png my.jar!http://img.dovov.comimagAe01q.png my.jar!/META-INF/manifest 现在我可以加载例如“images / image01.png”使用: ImageIO.read(this.getClass().getResource("images/image01.png)); 但只是因为我知道文件名,其余的我必须dynamic加载它们。