English 中文(简体)
Java -.jar 与Netbeans的意外问题
原标题:Java - .jar unexpected issue with Netbeans

首先,我知道Stack overflow(以及任何主管的类似论坛的网站)政策是“首先搜索,最后问”,在做作业时,我搜索了各种来源,以找到解决我问题的办法。 也就是说,我找不到合适的答案,别无选择,只能亲自问这个问题。

我有一些温和的编程技巧,特别是在爪哇语方面。 我正与默认的 Java SE JDK 进行二维游戏。 更具体地说, JDK 7u4。 在这个项目中, 我们有一个管理大多数 I/ O 操作的类。 其中一种方法返回到文件路径 :

public static URL load(String resource) {
    return ZM.class.getResource(resource);
}

现在,在Netbeans 上运行项目时,这一方法效果很好(第7.1版),然而,在建设和清理项目时,所产生的.jar 文件似乎与它的创建者不一致。在命令行运行.jar时,JVM发现一个 NullPointerException 。似乎无法在.jar 内阅读该文件。根据程序员的本能,我开始调试项目。我首先试图检查 load 方法是否是错误的成员。我做了一些测试,并取得了一些有趣的结果:

在Netbeans 上运行应用程序时, 当使用“ ZM. class” 和“ ZM. class” 作为方法参数时, 它返回 :

/D:/Projects/GeometryZombiesMayhem/build/classes/geometryzombiesmayhem/ZM.class

但当它从.jar 文档中运行时, 它返回 :

file:/D:/Projects/GeometryZombiesMayhem/dist/GeometryZombiesMayhem.jar!/geometryzombiesmayhem/ZM.class

当然,我试图从它中删除初始的 file: 字符串。 没有效果。 然后,我尝试从 .jar! > <...] 中删除感叹标记! [...] <...] 。 又一次, 没有。 我尝试从路径上移除所有可能的变异。 没有运气 。

对照自己的. jar 文件测试该方法的工作正常。 现在, 当我试图访问文件内部时, 它不允许我进入。 在这个项目的早期版本中, 它的工作效果很好。 我不太确定正在发生什么。 欢迎任何帮助 。

Thank you in advance, Renato

问题回答

在从罐头文件中装入资源时, 我总是使用类 Loader 。 无论您从 IDE 内部运行, 启动可执行罐子文件, 或者使用 JNLP 网站运行程序, 似乎一切都一样 。

尝试以这种方式装入资源 :

 try {
      ClassLoader cl = ZM.getClass().getClassLoader();     
      ImageIcon img  = new ImageIcon(cl.getResource("images/programIcon.jpg"));
      // do stuff with img.
 }
 catch(Exception failed) {
     System.out.println(failed);
 }

还有一个建议 - 您应该为资源创建一个单独的文件夹 。 在我上面的示例中, 图像是在我的 src 文件夹中的一个文件夹 。 这样一来, 当我建立它时, 它将自动成为罐子的一部分, 但我将资源与源代码分开 。

我猜你的问题是从你的罐子档案里 装上一个图像

这就是我如何做到的

URL imageurl = Myclassanme.class.getResource("/test/Ergophobia.jpg"); 
Image myPicture = Toolkit.getDefaultToolkit().getImage(imageurl);
JLabel piclabel = new JLabel(new ImageIcon( myPicture ));
piclabel.setBounds(0,0,myPicture.getWidth(null),myPicture.getHeight(null));

这样我就能把Ergo恐懼症 jpg文件放进测试包里了





相关问题
Spring Properties File

Hi have this j2ee web application developed using spring framework. I have a problem with rendering mnessages in nihongo characters from the properties file. I tried converting the file to ascii using ...

Logging a global ID in multiple components

I have a system which contains multiple applications connected together using JMS and Spring Integration. Messages get sent along a chain of applications. [App A] -> [App B] -> [App C] We set a ...

Java Library Size

If I m given two Java Libraries in Jar format, 1 having no bells and whistles, and the other having lots of them that will mostly go unused.... my question is: How will the larger, mostly unused ...

How to get the Array Class for a given Class in Java?

I have a Class variable that holds a certain type and I need to get a variable that holds the corresponding array class. The best I could come up with is this: Class arrayOfFooClass = java.lang....

SQLite , Derby vs file system

I m working on a Java desktop application that reads and writes from/to different files. I think a better solution would be to replace the file system by a SQLite database. How hard is it to migrate ...

热门标签