2014-01-07 31 views
0

我试图运行是下载一些jar文件到JVM缓存JNLP文件和我开始在启动时出现以下错误:ejbAccessException启动时JNLP的Java应用程序

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文件:

<?xml version="1.0" encoding="utf-8"?> 
<jnlp spec="1.0+" codebase="http://10.100.10.9/ikarusdelhitest/" href="ikarus.jnlp"> 
<information> 
    <title>ikarus</title> 
    <vendor>my company name here</vendor> 
    <homepage href="http://www.mycompanynamehere.com" /> 
    <description>description here</description> 
    <icon href="ikarus.ico" /> 
    <offline-allowed /> 
</information> 
<security> 
    <all-permissions /> 
</security> 
<resources> 
    <jar href="jars/ikarus/ikarusClient.jar" /> 
    <jar href="jars/ikarus/ikarusDelegators.jar" /> 
    <jar href="jars/ikarus/clientRules.jar" /> 
    <jar href="jars/ikarus/ruleImps.jar" /> 
    <jar href="jars/ikarus/ikarusUtil.jar" /> 
    <jar href="jars/ikarus/ikarusResources.jar" /> 
    <jar href="jars/ikarus/domain.jar" /> 
    <jar href="jars/ikarus/domain_repository.jar" /> 
    <jar href="jars/ikarus/domain_service.jar" /> 
    <jar href="jars/ikarus/app_repository.jar" /> 
    <jar href="jars/ikarus/app_service.jar" /> 
    <jar href="jars/ikarus/infrastructure.jar" /> 
    <jar href="jars/ikarus/integration_domain.jar" /> 
    <jar href="jars/jboss_ejb_auth/ejb3-persistence.jar" /> 
    <jar href="jars/jboss_ejb_auth/jboss-ejb3x.jar" /> 
    <jar href="jars/jboss_ejb_auth/jbossall-client.jar" /> 
    <jar href="jars/jasper/commons-beanutils-1.8.0.jar" /> 
    <jar href="jars/jasper/commons-collections-3.2.1.jar" /> 
    <jar href="jars/jasper/commons-digester-1.7.jar" /> 
    <jar href="jars/jasper/commons-logging-1.1.jar" /> 
    <jar href="jars/jasper/iText-2.1.0.jar" /> 
    <jar href="jars/jasper/jasperreports-3.6.0.jar" /> 
    <jar href="jars/jasper/poi-3.2-FINAL-20081019.jar" /> 
    <property name="jnlp.localization" value="Delhi"/> 
</resources> 
<application-desc main-class="com.celebi.ikarus.main.Ikarus" /> 

回答

0

我在我的应用程序的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: * 

(不要忘了在清单文件末尾添加一个emtpy行,否则无法正确解析)。

此外,您还需要将包含在JNLP-INF文件夹中的所有jar包中的.jnlp文件(即必须有一个JNLP-INF文件夹,里面包含.JNLP文件,用于你的应用程序中的所有jar文件,甚至在第三方jar中也要注意用大写字母来命名你的jnlp文件,如MYAPPLICATION.JNLP而不是myapplication.jnlp)

总而言之,您应该始终保持您的java控制台处于打开状态,同时解决有关您的java应用程序的某些问题。你甚至不应该在java控制台上看到任何警告,因为java控制台警告对于java虚拟机来说通常要严重得多,因为警告没有解决,它实际上不会运行你的应用程序。

1

您需要添加一个JRE在你的资源,从标准库中受益。

尝试在第一个<jar>标记之前添加<j2se version="1.6+"/>

+0

这没有帮助 –

+0

事实上,根据http://docs.oracle.com/javaee/6/api/javax/ejb/EJBAccessException.html是Java EE API的一部分,而不是Java SE API的一部分。我不确定是否可以从使用Java Web Start部署的应用程序连接到EJB(并且我认为这是一个有趣的想法),但在这种情况下,您可能需要在类路径中添加一些Java EE实现,例如JBoss或Glassfish。 – foch

+0

实际上,这个应用程序运行在Jboss_4.2.1企业服务器上,并且我在项目的许多jar中有一个EJBAccessException.class文件。也许我错过了要添加到类路径中的东西?我可以通过jnlp文件以某种方式解决此类路径问题吗? –

相关问题