Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.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
启动JNLP java应用程序时出现ejbAccessException_Java_Jakarta Ee_Jboss_Ejb_Jnlp - Fatal编程技术网

启动JNLP java应用程序时出现ejbAccessException

启动JNLP java应用程序时出现ejbAccessException,java,jakarta-ee,jboss,ejb,jnlp,Java,Jakarta Ee,Jboss,Ejb,Jnlp,我正在尝试运行一个jnlp文件,该文件正在将一些jar文件下载到jvm缓存中,我在启动时开始出现以下错误: java.lang.NoClassDefFoundError: javax/ejb/EJBAccessException at java.lang.Class.getDeclaredMethods0(Native Method) at java.lang.Class.privateGetDeclaredMethods(Unknown Source) at java.lang.Class.g

我正在尝试运行一个jnlp文件,该文件正在将一些jar文件下载到jvm缓存中,我在启动时开始出现以下错误:

java.lang.NoClassDefFoundError: javax/ejb/EJBAccessException
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Unknown Source)
at java.lang.Class.getMethod0(Unknown Source)
at java.lang.Class.getMethod(Unknown Source)
at com.sun.javaws.Launcher.executeApplication(Unknown Source)
at com.sun.javaws.Launcher.executeMainClass(Unknown Source)
at com.sun.javaws.Launcher.doLaunchApp(Unknown Source)
at com.sun.javaws.Launcher.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.ClassNotFoundException: javax.ejb.EJBAccessException
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at com.sun.jnlp.JNLPClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 9 more
是什么原因导致这个javax.ejb.EJBAccessException?这是我的jnlp文件:


伊卡洛斯
我的公司名在这里
描述在这里

您需要在资源中添加JRE,以从标准库中获益


尝试将
添加到第一个
标记之前。

我在应用程序的jar海洋深处找到了解决方案。基本上,jar资源文件都需要通过密钥库进行签名,它们都应该包含META-INF/MANIFEST.MF文件,其中必须包含以下行:

Codebase: *
Permissions: all-permissions
Application-Name: <your application name here>
Caller-Allowable-Codebase: *
Trusted-Library: true
Application-Library-Allowable-Codebase: *
Codebase:*
权限:所有权限
应用程序名称:
调用方允许的代码库:*
可信库:true
应用程序库允许的代码库:*
(不要忘记在清单文件的末尾添加emtpy行,否则无法正确解析它。)

此外,您还需要将.jnlp文件包含在所有jar中,并使用jnlp-INF文件夹进行包装。(即,必须有一个jnlp-INF文件夹,其中包含应用程序中所有jar归档文件的.jnlp文件。即使是在第三方jar中。还要注意使用大写字母命名jnlp文件,如MYAPPLICATION.jnlp,而不是MYAPPLICATION.jnlp)


总之,在对java应用程序进行故障排除时,您应该始终保持java控制台处于打开状态。您甚至不应该在java控制台上看到任何警告,因为通常java控制台警告对于java虚拟机来说要严重得多,因为没有解决这些警告,java虚拟机实际上无法运行您的应用程序。

事实上,根据是java EE API的一部分,而不是java SE API的一部分。我不确定是否可以从使用Java Web Start部署的应用程序连接到EJB(我相信这是一个有趣的想法),但在这种情况下,您可能需要在类路径中添加一些Java EE实现,实际上,这个应用程序运行在JBoss_4.2.1企业服务器上,我在项目的众多JAR中有一个EJBAccessException.class文件。也许我遗漏了一些要添加到类路径的内容?我可以从jnlp文件中解决这个类路径问题吗?