Java Web Start - 启动时的NoSuchMethodError

时间:2016-06-22 09:22:34

标签: java jar classloader java-web-start nosuchmethoderror

我在启动时在Java Web Start应用程序中遇到了一些NoSuchMethodErrors。这会导致致命的崩溃并强制app(和Java控制台)退出。 在编译时没有错误,但是当我在Tomcat服务器中运行应用程序时,它有时会崩溃。

应用程序不会在任何情况下崩溃,在某些PC客户端中我得到相同的错误,但应用程序仍然存在。

我使用JMC(Java Mission Control)发现了这些错误,但我找不到解决此问题的方法。什么可能导致这些错误? 我读到jar \库问题可能是原因(类加载问题)。

这些是我放在.jnlp中的罐子:

<jar href="jhome.jar" main="true" />
<jar href="jasperreports-5.1.0.jar" download="eager" />
<jar href="commons-logging-1.1.1.jar" download="eager" />
<jar href="commons-collections-2.1.1.jar" download="eager" />
<jar href="commons-digester-2.1.jar" download="eager" />
<jar href="commons-beanutils-1.8.0.jar" download="eager" />
<jar href="commons-vfs2-2.0.jar" download="eager" />
<jar href="jsch-0.1.51.jar" download="eager" />
<jar href="poi-3.7-20101029.jar" download="eager" />
<jar href="commons-beanutils-1.8.0.jar" download="eager" />
<jar href="commons-collections-3.2.1.jar" download="eager" />
<jar href="commons-lang-2.5.jar" download="eager" />
<jar href="ezmorph-1.0.6.jar" download="eager" />
<jar href="json-lib-2.4-jdk15.jar" download="eager" />
<jar href="json-simple-1.1.1.jar" download="eager" />

你能帮助我吗?

在每个NoSuchMethodError中,日志显示LinkageError - &gt; IncompatibleClassChangeError(它更具体吗?)

这是一个日志。我发现的每个NoSuchMethodError都有此日志事件

Error.<init>(String)            
LinkageError.<init>(String)         
IncompatibleClassChangeError.<init>(String)         
NoSuchMethodError.<init>(String)            
ObjectStreamClass.hasStaticInitializer(Class)           
ObjectStreamClass.computeDefaultSUID(Class)         
ObjectStreamClass.access$100(Class)         
ObjectStreamClass$1.run()           
ObjectStreamClass$1.run()           
AccessController.doPrivileged(PrivilegedAction)         
ObjectStreamClass.getSerialVersionUID()         
ObjectStreamClass.initNonProxy(ObjectStreamClass, Class, ClassNotFoundException, ObjectStreamClass)         
ObjectInputStream.readNonProxyDesc(boolean)         
ObjectInputStream.readClassDesc(boolean)            
ObjectInputStream.readOrdinaryObject(boolean)           
ObjectInputStream.readObject0(boolean)          
ObjectInputStream.readObject()          
ArrayList.readObject(ObjectInputStream)         
NativeMethodAccessorImpl.invoke0(Method, Object, Object[])          
NativeMethodAccessorImpl.invoke(Object, Object[])           
DelegatingMethodAccessorImpl.invoke(Object, Object[])           
Method.invoke(Object, Object[])         
ObjectStreamClass.invokeReadObject(Object, ObjectInputStream)           
ObjectInputStream.readSerialData(Object, ObjectStreamClass)         
ObjectInputStream.readOrdinaryObject(boolean)           
ObjectInputStream.readObject0(boolean)          
ObjectInputStream.readObject()          
ObjectStreamingManager.unzip(InputStream)           
... (after ... there are some lines of methods written by me in the Project)

0 个答案:

没有答案