Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.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
Webstart应用程序中的条件java.lang.NoClassDefFoundError_Java_Java Web Start - Fatal编程技术网

Webstart应用程序中的条件java.lang.NoClassDefFoundError

Webstart应用程序中的条件java.lang.NoClassDefFoundError,java,java-web-start,Java,Java Web Start,我们有一个webstart swing应用程序,在我们的多个远程桌面服务器上为许多客户运行。突然,在我们的一台服务器上,客户开始收到java.lang.NoClassDefFoundError。不是在启动时,应用程序可以正常启动,但是在执行特定任务时,例如通过我们的软件发送邮件,它会在控制台中弹出,如下所示: java.lang.NoClassDefFoundError: pos/MailSenderInterface at java.lang.ClassLoader.defineCla

我们有一个webstart swing应用程序,在我们的多个远程桌面服务器上为许多客户运行。突然,在我们的一台服务器上,客户开始收到java.lang.NoClassDefFoundError。不是在启动时,应用程序可以正常启动,但是在执行特定任务时,例如通过我们的软件发送邮件,它会在控制台中弹出,如下所示:

java.lang.NoClassDefFoundError: pos/MailSenderInterface
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(Unknown Source)
    at java.security.SecureClassLoader.defineClass(Unknown Source)
    ......
Caused by: java.lang.ClassNotFoundException: pos.MailSenderInterface
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    ... 56 more
问题是,这只发生在我们的一台服务器上。在所有其他服务器上,webstart应用程序运行良好!但是在这个单终端服务器上,我得到了错误,即使java版本是相同的,并且到jnlp文件的链接是相同的。 我当然尝试过在java控制面板中删除internet临时文件,但没有成功。 然后我开始玩弄,发现了一些非常奇怪的东西。 我们的客户从一个指向c:\drift中批处理文件的图标启动应用程序 此批处理文件仅包含以下内容:

@start javaws http://ourserver/ourapplication.jnlp

在批处理文件外键入链接也会出现相同的错误。然后我打了cd。。因此,我当前的路径是c:\而不是c:\ drift,并从那里启动javaws。令人惊讶的是,没有错误!然后我再次尝试cd漂移,错误再次出现。我已经试过很多次了,结果都是一样的。因此,不知何故,如果我得到NoClassDefFoundError与否,我从何处开始javaws的路径就有话要说。但是c:\或c:\ drift都不包含任何.jar文件(尽管子目录可能包含)。我对此感到非常困惑。到底怎么了?我们的java版本是1.7.0_67

啊哈!路径c:\drift\实际上在几年前有一个目录“pos”,有一个旧版本的MailSender.class,但没有MailSenderInterface.class删除此目录解决了问题。:-) (请记住,该错误与缺少pos/MailSenderInterface有关)
显然,java 1.7.067中最新的javaws试图从启动javaws的地方的子目录加载类(如果找到这样的目录),而不是从正确下载的jar文件加载文件。

检查所需的jar是否在类路径中