Java JWS-在jar中获取资源和资源管理

Java JWS-在jar中获取资源和资源管理,java,deployment,resources,embedded-resource,java-web-start,Java,Deployment,Resources,Embedded Resource,Java Web Start,我这样称呼自己的形象: ImageIO.read(this.getClass().getResource("../res/image1.gif")); 当我从命令行java-jar“testWebStartRes.jar”运行此命令时,我的图像将加载。 当我将其作为web启动应用程序部署到GlassFish服务器上时,从JNLP启动它时找不到映像 堆栈跟踪: Detected from bootclasspath: C:\\Program Files\\Java\\jdk1.7.0\\

我这样称呼自己的形象:

ImageIO.read(this.getClass().getResource("../res/image1.gif"));
当我从命令行
java-jar“testWebStartRes.jar”
运行此命令时,我的图像将加载。 当我将其作为web启动应用程序部署到GlassFish服务器上时,从JNLP启动它时找不到映像

堆栈跟踪:

    Detected from bootclasspath: C:\\Program Files\\Java\\jdk1.7.0\\jre\\lib\\deploy.jar
java.lang.IllegalArgumentException: input == null!
    at javax.imageio.ImageIO.read(ImageIO.java:1388)
    at main.Main.setAppIcon(Main.java:42)
    at main.Main.<init>(Main.java:19)
    at main.Main$1.run(Main.java:34)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:705)
    at java.awt.EventQueue.access$000(EventQueue.java:101)
    at java.awt.EventQueue$3.run(EventQueue.java:666)
    at java.awt.EventQueue$3.run(EventQueue.java:664)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:675)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
Null Image
从bootclasspath中检测到
:C:\\Program Files\\Java\\jdk1.7.0\\jre\\lib\\deploy.jar
java.lang.IllegalArgumentException:input==null!
在javax.imageio.imageio.read(imageio.java:1388)
位于main.main.setAppIcon(main.java:42)
main.main.(main.java:19)
main.main$1.run(main.java:34)
在java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)中
位于java.awt.EventQueue.dispatchEventImpl(EventQueue.java:705)
在java.awt.EventQueue.access$000(EventQueue.java:101)
在java.awt.EventQueue$3.run(EventQueue.java:666)
在java.awt.EventQueue$3.run(EventQueue.java:664)
位于java.security.AccessController.doPrivileged(本机方法)
位于java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
位于java.awt.EventQueue.dispatchEvent(EventQueue.java:675)
位于java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211)
位于java.awt.EventDispatchThread.PumpeEventsforFilter(EventDispatchThread.java:128)
位于java.awt.EventDispatchThread.PumpeEventsforHierarchy(EventDispatchThread.java:117)
位于java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
位于java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
在java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
空图像

编辑:使问题更容易理解。安德鲁·汤普森(Andrew Thompson)解决了如何使用单独的jar部署web start应用程序的问题。

1“有没有更好的方法在更改某些数据时不需要重新编译jar?”这句话几乎意味着需要重新编译源代码来生成新的jar。没有。2) 我通常会将图像(和大多数其他)资源放在一个单独的Jar中,该Jar位于应用程序的运行时类路径上原因有很多。3) 您确定映像位于运行时类路径上的Jar中吗?JWS应用程序。可以通过电话将自己的服务器“呼叫总部”以获取松散(未归档)的资源,但在这里这样做是否有意义尚不清楚。该映像是应用程序资源吗?“我的映像似乎未加载”堆栈跟踪应提供信息。请确保已打开。@AndrewThompson这是一个很好的观点,我看到java教程将资源放在一个单独的jar中。我会找出最好的方法来做这件事。是的,图像和xml是应用程序资源;我打算将所有字符串放在XML中,以获得多语言支持,图像将根据用户在GUI中的操作在应用程序中动态显示。顺便说一句,谢谢,我喜欢得到genuis专业人士的帮助。“我喜欢得到genuis专业人士的帮助。”我也是!你能给我介绍一些吗?;)顺便说一句-我猜自从发布了
llegalArgumentException:input==null之后,您已经解决了一些问题。你的问题是有效解决了,还是仍在进行中?