【问题标题】:NetBeans 7.4 not creating jar files properlyNetBeans 7.4 未正确创建 jar 文件
【发布时间】:2013-11-11 02:54:35
【问题描述】:

我正在为 Java 企业应用程序类开发一个项目。我有一个带有 ejb 模块的应用程序,该模块具有来自类库的“外观”类,该类库连接到一个简单的类似 Twitter 的数据库。所有逻辑都运行良好,但是,当我为外观添加远程 bean 并尝试运行它时,应用程序崩溃,最后包含堆栈跟踪。

查看 GlassFish 输出屏幕,我发现了以下警告:

警告:ACDEPL112:从 C:\Users[project_path]\Questions\dist\gfdeploy\Questions\QuestionClient.jar 的清单中引用了以下扩展或库,但在指示的位置找不到: QuestionLib.jar ;忽略并继续 信息:ACDEPL103:为应用程序客户端 Questions/QuestionClient.jar 启动了 Java Web Start 服务(contextRoot:/Questions/QuestionClient) 信息:问题在 3,097 毫秒内成功部署。 警告:元模型 [EntityType] 类型的集合为空。在对 Java SE 和某些 Java EE 容器管理的持久性单元进行实体搜索期间,可能未找到模型类。请使用元素或全局 false 元素验证您的实体类是否在 persistence.xml 中引用。 [class com.problemSet3.db.Questions] 上的查找将返回 null。 警告:EJB5184:在调用 EJB QuestionsFacade 时发生系统异常,方法:public java.util.List com.problemSet3.db.AbstractFacade.findAll()

当我检查路径时,我发现提到的 .jar 文件存在于它应该存在的位置,但它被命名为 QuestionLib_jar 并且它是一个包含 jar 文件所有内容的文件夹。这些文件是由 NetBeans 生成的,我不知道 jar 文件是如何编译到文件夹而不是实际的 jar 的。

我该如何解决这个问题?

堆栈跟踪

java.lang.reflect.InvocationTargetException 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:606) 在 org.glassfish.appclient.client.acc.AppClientContainer.launch(AppClientContainer.java:446) 在 org.glassfish.appclient.client.AppClientFacade.launch(AppClientFacade.java:183) 在 org.glassfish.appclient.client.AppClientGroupFacade.main(AppClientGroupFacade.java:65) 引起:javax.ejb.EJBException 在 com.sun.ejb.containers.EJBContainerTransactionManager.processSystemException(EJBContainerTransactionManager.java:748) 在 com.sun.ejb.containers.EJBContainerTransactionManager.completeNewTx(EJBContainerTransactionManager.java:698) 在 com.sun.ejb.containers.EJBContainerTransactionManager.postInvokeTx(EJBContainerTransactionManager.java:503) 在 com.sun.ejb.containers.BaseContainer.postInvokeTx(BaseContainer.java:4475) 在 com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:2009) 在 com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:1979) 在 com.sun.ejb.containers.EJBObjectInvocationHandler.invoke(EJBObjectInvocationHandler.java:212) 在 com.sun.ejb.containers.EJBObjectInvocationHandlerDelegate.invoke(EJBObjectInvocationHandlerDelegate.java:79) 在 com.sun.proxy.$Proxy295.findAll(未知来源) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:606) 在 com.sun.corba.ee.impl.presentation.rmi.ReflectiveTie.dispatchToMethod(ReflectiveTie.java:143) 在 com.sun.corba.ee.impl.presentation.rmi.ReflectiveTie._invoke(ReflectiveTie.java:173) 在 com.sun.corba.ee.impl.protocol.ServerRequestDispatcherImpl.dispatchToServant(ServerRequestDispatcherImpl.java:528) 在 com.sun.corba.ee.impl.protocol.ServerRequestDispatcherImpl.dispatch(ServerRequestDispatcherImpl.java:199) 在 com.sun.corba.ee.impl.protocol.MessageMediatorImpl.handleRequestRequest(MessageMediatorImpl.java:1549) 在 com.sun.corba.ee.impl.protocol.MessageMediatorImpl.handleRequest(MessageMediatorImpl.java:1425) 在 com.sun.corba.ee.impl.protocol.MessageMediatorImpl.handleInput(MessageMediatorImpl.java:930) 在 com.sun.corba.ee.impl.protocol.giopmsgheaders.RequestMessage_1_2.callback(RequestMessage_1_2.java:213) 在 com.sun.corba.ee.impl.protocol.MessageMediatorImpl.handleRequest(MessageMediatorImpl.java:694) 在 com.sun.corba.ee.impl.protocol.MessageMediatorImpl.dispatch(MessageMediatorImpl.java:496) 在 com.sun.corba.ee.impl.protocol.MessageMediatorImpl.doWork(MessageMediatorImpl.java:2222) 在 com.sun.corba.ee.impl.threadpool.ThreadPoolImpl$WorkerThread.performWork(ThreadPoolImpl.java:497) 在 com.sun.corba.ee.impl.threadpool.ThreadPoolImpl$WorkerThread.run(ThreadPoolImpl.java:540) 原因:java.lang.IllegalArgumentException:在元模型中未找到键类 [com.problemSet3.db.Questions] 的 [EntityType] - 请验证是否使用特定 com 在 persistence.xml 中引用了 [Entity] 类.problemSet3.db.Questions 属性或全局 false 元素。 在 org.eclipse.persistence.internal.jpa.metamodel.MetamodelImpl.entityEmbeddableManagedTypeNotFound(MetamodelImpl.java:173) 在 org.eclipse.persistence.internal.jpa.metamodel.MetamodelImpl.entity(MetamodelImpl.java:193) 在 org.eclipse.persistence.internal.jpa.querydef.CommonAbstractCriteriaImpl.internalFrom(CommonAbstractCriteriaImpl.java:114) 在 org.eclipse.persistence.internal.jpa.querydef.AbstractQueryImpl.from(AbstractQueryImpl.java:246) 在 com.problemSet3.db.AbstractFacade.findAll(AbstractFacade.java:43) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:606) 在 org.glassfish.ejb.security.application.EJBSecurityManager.runMethod(EJBSecurityManager.java:1081) 在 org.glassfish.ejb.security.application.EJBSecurityManager.invoke(EJBSecurityManager.java:1153) 在 com.sun.ejb.containers.BaseContainer.invokeBeanMethod(BaseContainer.java:4695) 在 com.sun.ejb.EjbInvocation.invokeBeanMethod(EjbInvocation.java:630) 在 com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:822) 在 com.sun.ejb.EjbInvocation.proceed(EjbInvocation.java:582) 在 org.jboss.weld.ejb.AbstractEJBRequestScopeActivationInterceptor.aroundInvoke(AbstractEJBRequestScopeActivationInterceptor.java:55) 在 sun.reflect.GeneratedMethodAccessor115.invoke(未知来源) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:606) 在 com.sun.ejb.containers.interceptors.AroundInvokeInterceptor.intercept(InterceptorManager.java:883) 在 com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:822) 在 com.sun.ejb.EjbInvocation.proceed(EjbInvocation.java:582) 在 com.sun.ejb.containers.interceptors.SystemInterceptorProxy.doCall(SystemInterceptorProxy.java:163) 在 com.sun.ejb.containers.interceptors.SystemInterceptorProxy.aroundInvoke(SystemInterceptorProxy.java:140) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:606) 在 com.sun.ejb.containers.interceptors.AroundInvokeInterceptor.intercept(InterceptorManager.java:883) 在 com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:822) 在 com.sun.ejb.containers.interceptors.InterceptorManager.intercept(InterceptorManager.java:369) 在 com.sun.ejb.containers.BaseContainer.__intercept(BaseContainer.java:4667) 在 com.sun.ejb.containers.BaseContainer.intercept(BaseContainer.java:4655) 在 com.sun.ejb.containers.EJBObjectInvocationHandler.invoke(EJBObjectInvocationHandler.java:205) ... 19 更多 Java 结果:1

【问题讨论】:

    标签: netbeans jar java-ee-7


    【解决方案1】:

    好吧,经过一个痛苦的夜晚和早晨,我终于解决了它。 ejb 模块正在使用的 persistence.xml 文件有以下行:

    <exclude-unlisted-classes>false</exclude-unlisted-classes>
    

    我进入了属性并手动使其包含每个类,所以现在它看起来像这样:

    <class>com.problemSet3.db.Answers</class>
    <class>com.problemSet3.db.Questions</class>
    <class>com.problemSet3.db.Users</class>
    <exclude-unlisted-classes>true</exclude-unlisted-classes>
    

    加上其他生成的代码。我仍然在 GlassFish 上收到警告,但没有抛出异常。

    【讨论】:

      猜你喜欢
      • 2019-05-07
      • 2012-12-18
      • 2021-03-07
      • 2015-02-05
      • 2013-08-24
      • 1970-01-01
      • 1970-01-01
      • 2012-03-29
      • 2018-08-16
      相关资源
      最近更新 更多