2012-04-12 18 views
1

我正在使用tomcat在web應用程序(REST)中使用密碼運行查詢。 此代碼工作正常在一個正常的Java應用程序,但如果我在Tomcat上的Web應用程序運行它,它返回此錯誤:在tomcat上運行查詢密碼,錯誤與斯卡拉圖書館

java.lang.NoClassDefFoundError: scala/ScalaObject 

如果我添加一個階,library.jar到項目時我將部署在Tomcat它會返回一個錯誤「OutOfMemory」。在網上搜索,我已將JAVA_OPTS從512M增加到2048M,但沒有任何結果。

這是我的代碼來執行我的查詢:

ExecutionEngine engine = new ExecutionEngine(graphDb); 
ExecutionResult result = engine.execute(query); 

它看起來像ExecuteEngine利用Scala庫和這個庫的衝突和Tomcat。 有什麼建議嗎?

編輯:

(全棧OOME)

16-apr-2012 16.25.10 org.apache.catalina.core.ContainerBase startInternal 
GRAVE: A child container failed during start 
java.util.concurrent.ExecutionException: java.lang.OutOfMemoryError: Java heap space 
    at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:222) 
    at java.util.concurrent.FutureTask.get(FutureTask.java:83) 
    at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1128) 
    at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:782) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1566) 
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1556) 
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:138) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) 
    at java.lang.Thread.run(Thread.java:680) 
    Caused by: java.lang.OutOfMemoryError: Java heap space 
    at java.util.Arrays.copyOfRange(Arrays.java:3209) 
    at java.lang.String.<init>(String.java:215) 
    at java.io.DataInputStream.readUTF(DataInputStream.java:644) 
    at java.io.DataInputStream.readUTF(DataInputStream.java:547) 
    at org.apache.tomcat.util.bcel.classfile.ConstantUtf8.<init>(ConstantUtf8.java:48) 
    at org.apache.tomcat.util.bcel.classfile.Constant.readConstant(Constant.java:129) 
    at org.apache.tomcat.util.bcel.classfile.ConstantPool.<init>(ConstantPool.java:60) 
    at org.apache.tomcat.util.bcel.classfile.ClassParser.readConstantPool(ClassParser.java:209) 
    at org.apache.tomcat.util.bcel.classfile.ClassParser.parse(ClassParser.java:119) 
    at org.apache.catalina.startup.ContextConfig.populateJavaClassCache(ContextConfig.java:2156) 
    at org.apache.catalina.startup.ContextConfig.populateJavaClassCache(ContextConfig.java:2139) 
    at org.apache.catalina.startup.ContextConfig.checkHandlesTypes(ContextConfig.java:2077) 
    at org.apache.catalina.startup.ContextConfig.processAnnotationsStream(ContextConfig.java:2034) 
    at org.apache.catalina.startup.ContextConfig.processAnnotationsJar(ContextConfig.java:1923) 
    at org.apache.catalina.startup.ContextConfig.processAnnotationsUrl(ContextConfig.java:1891) 
    at org.apache.catalina.startup.ContextConfig.processAnnotations(ContextConfig.java:1877) 
    at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1270) 
    at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:855) 
    at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:345) 
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119) 
    at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90) 
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5161) 
    ... 8 more 
16-apr-2012 16.25.11 org.apache.catalina.core.ContainerBase startInternal 
GRAVE: A child container failed during start 
java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost]] 
    at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:222) 
    at java.util.concurrent.FutureTask.get(FutureTask.java:83) 
    at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1128) 
    at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:302) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
    at org.apache.catalina.core.StandardService.startInternal(StandardService.java:443) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
    at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:732) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
    at org.apache.catalina.startup.Catalina.start(Catalina.java:675) 
    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 org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:322) 
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:450) 
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost]] 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154) 
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1566) 
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1556) 
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:138) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) 
    at java.lang.Thread.run(Thread.java:680) 
Caused by: org.apache.catalina.LifecycleException: A child container failed during start 
    at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1136) 
    at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:782) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
    ... 7 more 
16-apr-2012 16.25.11 org.apache.catalina.startup.Catalina start 
GRAVE: Catalina.start: 
org.apache.catalina.LifecycleException: Failed to start component [StandardServer[8005]] 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154) 
    at org.apache.catalina.startup.Catalina.start(Catalina.java:675) 
    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 org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:322) 
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:450) 
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardService[Catalina]] 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154) 
    at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:732) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
    ... 7 more 
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina]] 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154) 
    at org.apache.catalina.core.StandardService.startInternal(StandardService.java:443) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
    ... 9 more 
Caused by: org.apache.catalina.LifecycleException: A child container failed during start 
    at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1136) 
    at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:302) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
    ... 11 more 
16-apr-2012 16.25.11 org.apache.catalina.startup.Catalina start 
INFO: Server startup in 13147 ms 
+0

不應該與Scala和Tomcat發生衝突。究竟是哪個版本的Apache Tomcat,還需要發佈OOME的完整堆棧跟蹤。 – 2012-04-12 17:54:17

+0

您要返回多少數據?這可能是在服務器端構建的巨大結果... – 2012-04-13 21:09:23

回答

0

的noclassdeffound是由於缺少Scala庫,以便將它添加到WEB-INF/lib下是正確的。將庫添加到類路徑不會導致內存不足錯誤,所以它似乎與您的應用程序有關。

ExecutionEngine類是什麼?什麼是堆棧跟蹤(儘管這不一定有幫助)。你確定你的web應用程序與你的java應用程序沒有問題嗎?你如何測試你的webapp?難道簡單的說許多併發線程(請求)會導致OOME,但是一個線程可以正常工作(如普通的Java應用程序)?