【问题标题】:java.lang.NoClassDefFoundError when upload POJOs models in Guvnor在 Guvnor 中上传 POJO 模型时出现 java.lang.NoClassDefFoundError
【发布时间】:2015-10-23 10:14:15
【问题描述】:

我使用 Guvnor 实现了一个决策引擎,当我尝试使用 .jar 文件上传 模型 并选择“新建->上传 POJO 模型”时,稍后单击在“文件->保存”中,Guvnor 抛出异常:无法验证数据包配置。在日志中,guvnor 写道:

10:37:32,592 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/drools-guvnor]] (http--0.0.0.0-8080-2) Exception while dispatching incoming RPC call: com.google.gwt.user.server.rpc.UnexpectedException: Service method 'public abstract org.drools.ide.common.client.modeldriven.SuggestionCompletionEngine org.drools.guvnor.client.rpc.SuggestionCompletionEngineService.loadSuggestionCompletionEngine(java.lang.String) throws com.google.gwt.user.client.rpc.SerializationException' threw an unexpected exception: java.lang.NoClassDefFoundError: com/microsoft/sqlserver/jdbc/SQLServerException
  at com.google.gwt.user.server.rpc.RPC.encodeResponseForFailure(RPC.java:385) [gwt-servlet-2.4.0.jar:]
  at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:588) [gwt-servlet-2.4.0.jar:]
  at com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:208) [gwt-servlet-2.4.0.jar:]
  at com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost(RemoteServiceServlet.java:248) [gwt-servlet-2.4.0.jar:]
  at com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost(AbstractRemoteServiceServlet.java:62) [gwt-servlet-2.4.0.jar:]
  at javax.servlet.http.HttpServlet.service(HttpServlet.java:754) [jboss-servlet-api_3.0_spec-1.0.0.Final.jar:1.0.0.Final]
  at javax.servlet.http.HttpServlet.service(HttpServlet.java:847) [jboss-servlet-api_3.0_spec-1.0.0.Final.jar:1.0.0.Final]
  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:329) [jbossweb-7.0.13.Final.jar:]
  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.13.Final.jar:]
  at org.jboss.weld.servlet.ConversationPropagationFilter.doFilter(ConversationPropagationFilter.java:62) [weld-core-1.1.5.AS71.Final.jar:2012-02-10 15:31]
  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:280) [jbossweb-7.0.13.Final.jar:]
  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.13.Final.jar:]
  at org.jboss.solder.servlet.exception.CatchExceptionFilter.doFilter(CatchExceptionFilter.java:65) [solder-impl-3.1.1.Final.jar:3.1.1.Final]
  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:280) [jbossweb-7.0.13.Final.jar:]
  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.13.Final.jar:]
  at org.jboss.solder.servlet.event.ServletEventBridgeFilter.doFilter(ServletEventBridgeFilter.java:74) [solder-impl-3.1.1.Final.jar:3.1.1.Final]
  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:280) [jbossweb-7.0.13.Final.jar:]
  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.13.Final.jar:]
  at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275) [jbossweb-7.0.13.Final.jar:]
  at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161) [jbossweb-7.0.13.Final.jar:]
  at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:153) [jboss-as-web-7.1.1.Final.jar:7.1.1.Final]
  at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:155) [jbossweb-7.0.13.Final.jar:]
  at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) [jbossweb-7.0.13.Final.jar:]
  at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) [jbossweb-7.0.13.Final.jar:]
  at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:368) [jbossweb-7.0.13.Final.jar:]
  at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877) [jbossweb-7.0.13.Final.jar:]
  at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:671) [jbossweb-7.0.13.Final.jar:]
  at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:930) [jbossweb-7.0.13.Final.jar:]
  at java.lang.Thread.run(Thread.java:662) [rt.jar:1.6.0_45]
Caused by: java.lang.NoClassDefFoundError: com/microsoft/sqlserver/jdbc/SQLServerException
  at java.lang.Class.forName0(Native Method) [rt.jar:1.6.0_45]
  at java.lang.Class.forName(Class.java:249) [rt.jar:1.6.0_45]
  at org.drools.rule.MapBackedClassLoader.loadClass(MapBackedClassLoader.java:108) [drools-core-5.5.0.Final.jar:5.5.0.Final]
  at java.lang.ClassLoader.loadClass(ClassLoader.java:247) [rt.jar:1.6.0_45]
  at org.drools.base.ClassTypeResolver.resolveType(ClassTypeResolver.java:155) [drools-core-5.5.0.Final.jar:5.5.0.Final]
  at org.drools.ide.common.server.rules.SuggestionCompletionLoader.loadClass(SuggestionCompletionLoader.java:647) [droolsjbpm-ide-common-5.5.0.Final.jar:5.5.0.Final]
  at org.drools.ide.common.server.rules.SuggestionCompletionLoader.addFactType(SuggestionCompletionLoader.java:606) [droolsjbpm-ide-common-5.5.0.Final.jar:5.5.0.Final]
  at org.drools.ide.common.server.rules.SuggestionCompletionLoader.populateModelInfo(SuggestionCompletionLoader.java:320) [droolsjbpm-ide-common-5.5.0.Final.jar:5.5.0.Final]
  at org.drools.ide.common.server.rules.SuggestionCompletionLoader.populateEngineBuilder(SuggestionCompletionLoader.java:224) [droolsjbpm-ide-common-5.5.0.Final.jar:5.5.0.Final]
  at org.drools.ide.common.server.rules.SuggestionCompletionLoader.processPackageHeader(SuggestionCompletionLoader.java:218) [droolsjbpm-ide-common-5.5.0.Final.jar:5.5.0.Final]
  at org.drools.ide.common.server.rules.SuggestionCompletionLoader.getSuggestionEngine(SuggestionCompletionLoader.java:186) [droolsjbpm-ide-common-5.5.0.Final.jar:5.5.0.Final]
  at org.drools.guvnor.server.util.BRMSSuggestionCompletionLoader.getSuggestionEngine(BRMSSuggestionCompletionLoader.java:63) [classes:5.5.0.Final]
  at org.drools.guvnor.server.util.BRMSSuggestionCompletionLoader.getSuggestionEngine(BRMSSuggestionCompletionLoader.java:70) [classes:5.5.0.Final]
  at org.drools.guvnor.server.SuggestionCompletionEngineLoaderInitializer.loadFor(SuggestionCompletionEngineLoaderInitializer.java:42) [classes:5.5.0.Final]
  at org.drools.guvnor.server.SuggestionCompletionEngineServiceImplementation.loadSuggestionCompletionEngine(SuggestionCompletionEngineServiceImplementation.java:48) [classes:5.5.0.Final]
  at org.drools.guvnor.server.SuggestionCompletionEngineServiceServlet.loadSuggestionCompletionEngine(SuggestionCompletionEngineServiceServlet.java:37) [classes:5.5.0.Final]
  at sun.reflect.GeneratedMethodAccessor96.invoke(Unknown Source) [:1.6.0_45]
  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) [rt.jar:1.6.0_45]
  at java.lang.reflect.Method.invoke(Method.java:597) [rt.jar:1.6.0_45]
  at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:569) [gwt-servlet-2.4.0.jar:]
  ... 27 more
Caused by: java.lang.ClassNotFoundException: com.microsoft.sqlserver.jdbc.SQLServerException from [Module "deployment.drools-guvnor.war:main" from Service Module Loader]
  at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:190)
  at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:468)
  at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:456)
  at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:423)
  at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:398)
  at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:120)
  at java.lang.Class.forName0(Native Method) [rt.jar:1.6.0_45]
  at java.lang.Class.forName(Class.java:249) [rt.jar:1.6.0_45]
  at org.drools.rule.MapBackedClassLoader.loadClass(MapBackedClassLoader.java:108) [drools-core-5.5.0.Final.jar:5.5.0.Final]
  at java.lang.ClassLoader.loadClass(ClassLoader.java:247) [rt.jar:1.6.0_45]
  ... 47 more

当我推入“验证配置”时,我收到此错误:无法找到类:com.microsoft.sqlserver.jdbc.SQLServerException,这是 *.deceng.utility.CDBConnection 所需的。您可能需要向模型添加更多类。但是我在 mi eclipse 项目中添加了这个库

以及如何在 .jar 类路径中看到 sqljdbc4.jar 包含在内:

<?xml version="1.0" encoding="UTF-8"?>
<classpath>
       <classpathentry kind="src" path="src"/>
       <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
       <classpathentry combineaccessrules="false" kind="src" path="/Model"/>
       <classpathentry exported="true" kind="lib" path="C:/Users/jmflores/DECENG-TEST/ExtLib/log4j-1.2.17.jar"/>
       <classpathentry exported="true" kind="lib" path="C:/Users/jmflores/DECENG-TEST/ExtLib/sqljdbc4.jar"/>
       <classpathentry kind="output" path="bin"/>
</classpath>

我尝试了所有但我不知道我能做到。

感谢和问候。

编辑:

我尝试使用部署程序集但不起作用。

我在部署中添加 sqljdbc4.jar,稍后再次导出 .jar 和 java.lang.NoClassDefFoundError 等项目。

【问题讨论】:

    标签: java eclipse jar drools-guvnor


    【解决方案1】:

    您是否已将该 jar 添加到您的 Eclipse 部署程序集? 如果没有,请将 jar 文件添加到您的 Eclipse 部署程序集。

    1. 右键单击您的项目。
    2. 转到属性选择“部署程序集”
    3. 在右侧窗格中,选择“添加”并选择您的 jar 文件。

    请关注this link

    【讨论】:

    • 我用的是 Eclipse Indigo,这个选项没有出现。我使用新的 Eclipse 版本并告诉你发生了什么。感谢您的回复。
    • 我使用部署程序集但无法正常工作。编辑我的问题。
    【解决方案2】:

    只是作为一个建议。请查看项目属性窗口下的项目构面是否包含选定的 Web 模块。如果未选择该选项,则不会出现部署程序集。

    选择它后,您可能需要对项目进行必要的配置,例如选择部署描述并向其添加所需的依赖项和源。

    希望这会有所帮助!

    谢谢 -vivek

    【讨论】:

    • 非常感谢您的建议。我已经配置了项目,现在出现了。
    • 您能否告诉我们问题是如何解决的以及配置的实际问题是什么
    • 部署程序集如何出现在项目属性中?因为我的问题(无法找到类:com.microsoft.sqlserver.jdbc.SQLServerException)从未得到解决。
    猜你喜欢
    • 1970-01-01
    • 2019-02-21
    • 2014-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-05
    • 2013-10-01
    相关资源
    最近更新 更多