Product Version: PRPC V5.3
Reference Document: jsr94service52.pdf
按照來自PDN文檔jsr94service52中的JSR94 Sample一步一步重現時,無論采用Ant還是Eclipse編譯運行,都可能會出現如下的問題:
2009-05-31 17:14:43,500 [ user-5a57c3e103] ( etier.engine.EngineStartup) ERROR - PegaRULES initialization failed. Server: user-5a57c3e103
com.pega.pegarules.pub.context.InitializationFailedError: PRNodeImpl init failed
at com.pega.pegarules.engine.context.PREnvironment.getThreadAndInitialize(PREnvironment.java:338)
at com.pega.pegarules.etier.engine.EngineStartup.initEngine(EngineStartup.java:456)
at com.pega.pegarules.etier.impl.EngineImpl._initEngine_privact(EngineImpl.java:125)
at com.pega.pegarules.etier.impl.EngineImpl.doStartup(EngineImpl.java:98)
at com.pega.pegarules.priv.services.jsr94.PRRuntime.startEngine(PRRuntime.java:327)
at com.pega.pegarules.priv.services.jsr94.PRRuntime.getEngine(PRRuntime.java:87)
at com.pega.pegarules.priv.services.jsr94.PRRuntime.<init>(PRRuntime.java:78)
at com.pega.pegarules.priv.services.jsr94.PRAdministrator.<init>(PRAdministrator.java:81)
at com.pega.pegarules.pub.services.jsr94.PRuleServiceProvider.<init>(PRuleServiceProvider.java:64)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at java.lang.Class.newInstance0(Class.java:355)
at java.lang.Class.newInstance(Class.java:308)
at javax.rules.RuleServiceProviderManager.registerRuleServiceProvider(RuleServiceProviderManager.java:84)
at javax.rules.RuleServiceProviderManager.registerRuleServiceProvider(RuleServiceProviderManager.java:67)
at com.pega.pegarules.pub.services.jsr94.PRuleServiceProvider.<clinit>(PRuleServiceProvider.java:52)
at com.pega.pegarules.sample.service.jsr94.client.SubmitClaim.run(SubmitClaim.java:97)
Caused by: com.pega.pegarules.pub.PRRuntimeException: Method Invocation exception
at com.pega.pegarules.engine.context.PREnvironment.doWithRequestorLocked(PREnvironment.java:731)
at com.pega.pegarules.engine.context.PREnvironment.doWithRequestorLocked(PREnvironment.java:568)
at com.pega.pegarules.engine.context.PREnvironment.getThreadAndInitialize(PREnvironment.java:328)
18 more
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.pega.pegarules.engine.context.PREnvironment.doWithRequestorLocked(PREnvironment.java:729)
20 more
Caused by: java.lang.NoClassDefFoundError: javax/servlet/jsp/JspFactory
at com.pega.pegarules.engine.context.PRNodeImpl.updateSystemStart(PRNodeImpl.java:1519)
at com.pega.pegarules.engine.context.PRNodeImpl.startNode(PRNodeImpl.java:1157)
at com.pega.pegarules.engine.context.PREnvironment.finishInit(PREnvironment.java:833)
25 more
Caused by: java.lang.ClassNotFoundException: javax.servlet.jsp.JspFactory
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
28 more
如果出現類似javax.serverlet.jsp.JspFactory相關的問題,可能有兩個原因引起:
1. 在所有引用的Jar path中,沒找到javax.serverlet.jsp.JspFactory類。
2. 在多個Jar path中,都找到javax.serverlet.jsp.JspFactory類,出現沖突。
在PRPC中使用JSR94,需要調用servlet-api.jar,該jar包來自Tomcat/common/lib,查詢http://www.findjar.com/index.jsp?query=javax.servlet.jsp.JspFactory可知在servlet-api.jar中應該(不敢肯定)包括javax.serverlet.jsp.JspFactory類,但程序仍然報告錯誤信息。從查詢結果中得知在同樣的目錄下,還有一個jar包jsp-api.jar也包含該類。于是,本人將兩個jar包同時放到Eclipse的Path中去,結果編譯運行成功。所以本人推測,在apache-tomcat-5.5.17版本中,servlet-api.jar中并不包含javax.serverlet.jsp.JspFactory類。
如有異議,還請高手指點,以上推斷,純屬個人愚見。
Reference Document: jsr94service52.pdf
按照來自PDN文檔jsr94service52中的JSR94 Sample一步一步重現時,無論采用Ant還是Eclipse編譯運行,都可能會出現如下的問題:



















































如果出現類似javax.serverlet.jsp.JspFactory相關的問題,可能有兩個原因引起:
1. 在所有引用的Jar path中,沒找到javax.serverlet.jsp.JspFactory類。
2. 在多個Jar path中,都找到javax.serverlet.jsp.JspFactory類,出現沖突。
在PRPC中使用JSR94,需要調用servlet-api.jar,該jar包來自Tomcat/common/lib,查詢http://www.findjar.com/index.jsp?query=javax.servlet.jsp.JspFactory可知在servlet-api.jar中應該(不敢肯定)包括javax.serverlet.jsp.JspFactory類,但程序仍然報告錯誤信息。從查詢結果中得知在同樣的目錄下,還有一個jar包jsp-api.jar也包含該類。于是,本人將兩個jar包同時放到Eclipse的Path中去,結果編譯運行成功。所以本人推測,在apache-tomcat-5.5.17版本中,servlet-api.jar中并不包含javax.serverlet.jsp.JspFactory類。
如有異議,還請高手指點,以上推斷,純屬個人愚見。