"Getting error com.rapidminer.operator.UserError: No message."
sk
New Altair Community Member
Hi,
I am working on a Web application (Tomcat and jdk1.6) that classifies the text data.
For the same I am using RapidMiner 4.4. I have 2 XML files; one creates the model on trained data set and second classifies the actual test data using the model.
When I run this it gives me following error. However it works well in standalone application.
com.rapidminer.operator.UserError: No message.
at com.rapidminer.operator.io.ModelLoader.apply(ModelLoader.java:97)
at com.rapidminer.operator.Operator.apply(Operator.java:666)
at com.rapidminer.operator.OperatorChain.apply(OperatorChain.java:416)
at com.rapidminer.operator.Operator.apply(Operator.java:666)
at com.rapidminer.Process.run(Process.java:695)
at com.rapidminer.Process.run(Process.java:665)
at com.rapidminer.Process.run(Process.java:655)
at com.cts.rapidminer.training.CreateExampleSet.testData(CreateExampleSet.java:245)
at com.cts.rapidminer.training.CreateExampleSet.testMethod(CreateExampleSet.java:254)
at com.cts.rapidminer.servlet.TrainModelServlet.doPost(TrainModelServlet.java:38)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
at java.lang.Thread.run(Thread.java:619)
Caused by: java.io.StreamCorruptedException: invalid stream header: 1F8B0800
at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:783)
at java.io.ObjectInputStream.<init>(ObjectInputStream.java:280)
at com.rapidminer.operator.io.ModelLoader.apply(ModelLoader.java:76)
... 35 more
I am working on a Web application (Tomcat and jdk1.6) that classifies the text data.
For the same I am using RapidMiner 4.4. I have 2 XML files; one creates the model on trained data set and second classifies the actual test data using the model.
When I run this it gives me following error. However it works well in standalone application.
com.rapidminer.operator.UserError: No message.
at com.rapidminer.operator.io.ModelLoader.apply(ModelLoader.java:97)
at com.rapidminer.operator.Operator.apply(Operator.java:666)
at com.rapidminer.operator.OperatorChain.apply(OperatorChain.java:416)
at com.rapidminer.operator.Operator.apply(Operator.java:666)
at com.rapidminer.Process.run(Process.java:695)
at com.rapidminer.Process.run(Process.java:665)
at com.rapidminer.Process.run(Process.java:655)
at com.cts.rapidminer.training.CreateExampleSet.testData(CreateExampleSet.java:245)
at com.cts.rapidminer.training.CreateExampleSet.testMethod(CreateExampleSet.java:254)
at com.cts.rapidminer.servlet.TrainModelServlet.doPost(TrainModelServlet.java:38)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
at java.lang.Thread.run(Thread.java:619)
Caused by: java.io.StreamCorruptedException: invalid stream header: 1F8B0800
at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:783)
at java.io.ObjectInputStream.<init>(ObjectInputStream.java:280)
at com.rapidminer.operator.io.ModelLoader.apply(ModelLoader.java:76)
... 35 more
0
Answers
-
Hi,
unfortunately, you are giving virually no context information in your post, e.g. about how are you packaging your application. To me, it looks like RapidMiner is not finding all necessary resources which messes up the error messages. Apparently, the true error message will have to do with the ModelLoader, which is probably a bad idea to use inside a Web container anyway.
If you need more help, please give more information about how you are using RM from within Tomcat.
Cheers,
Simon
0 -
Hi Simon,
Thanks for the reply
Here is the more information about my Text Classification application.
I have created a Tomcat project in eclipse and added the entire required jar in CLASSPATH. RapidMiner initialization code is inside the InitServlet so it gets initialized whenever tomcat starts.
In this application, Classification is two step process (created 2 xml using Rapidminer GUI).
1. Creates model on training data set (Createmodel.xml)
2. Classifies the test data based on model (Classifydata.xml)
I am calling these xml’s from Servlet using Process class. Below is the code snapshot
Process trainData = new Process (new File (“Createmodel.xml”));
trainData.run();
Process classifyTestDataProcess = new Process (new File (
“Classifydata.xml”));
classifyTestDataProcess.run();
First process executes successfully and creates the model, but when I try to run the second process it gives com.rapidminer.operator.UserError: No message.
0 -
Hi SK,
unfortunately, there are a dozen or so ways to package Web apps with eclipse and Tomcat, so I still don't know what is going on. Also, I don't know what CLASSPATH you are referring to or what the entire required jar is (I would assume there are several).
Some things to check:
- Obviously, UserError does not find its resource bundle, so it always says "No message", so can you access the resource:
- com.rapidminer.resources.UserErrorMessages.properties ?
- is a resource returned by Tools.getResource("UserErrorMessages.properties")?
- Do the RapidMiner init methods report anything suspicious?
- Do RapidMiner and Tomcat find all libraries?
- Track the error in the stack trace, so you will at least know what is going wrong. Then you can work on the real problem although you don't get a nice error message.
Let me note that I am posting these questions only to give you a hint as to what should be considered. Even if you send me all your deployment descriptors and log files, I believe it is virtually impossible to debug deployment problems like this one through a forum.
Best,
Simon
0 -
This problem might be related to this one
http://rapid-i.com/rapidforum/index.php/topic,1038.0.html
but your's seems to be worse since not even the error messages are loaded. As I said, this *might* be a class loader problem, and it might be fixed in 4.5. Feedback is welcome.
Cheers,
Simon0