Summing (variable) strings error

edit: simplified example

I just don't get it, whenever I sum up a variable that contains a string (ie: string + string), it will give me an error/exception.

For example I call this short function:

publicvoid writeFile()

{

String test ="/loc/to/a/map/";

String test2 = test +"filename";

}

If I remove the ' + "filename" ' it will work without problems.

This works local on my machine but whenever i upload it to a webserver (linux machine) i get the error (see below).

It does not make any sense to me, could there be some version difference ?

The server i run locally runs java 1.5 while the webserver runs java 1.4 (1.4.2)

Anyone can help me?

Error I recieve when I sum up a string:

StandardWrapperValve[jsp]: Servlet.service() for servlet jsp threw exception

java.lang.NoClassDefFoundError: while resolving class: com.WriteFile

java.lang.NoClassDefFoundError: while resolving class: com.WriteFile

at java.lang.VMClassLoader.transformException(java.lang.Class, java.lang.Throwable) (/

usr/lib/libgcj.so.6.0.0)

at java.lang.VMClassLoader.resolveClass(java.lang.Class) (/usr/lib/libgcj.so.6.0.0)

at java.lang.Class.initializeClass() (/usr/lib/libgcj.so.6.0.0)

at com.FilterController.doFilter(javax.servlet.ServletRequest, javax.servle

t.ServletResponse, javax.servlet.FilterChain) (Unknown Source)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(javax.servlet.Serv

letRequest, javax.servlet.ServletResponse) (/usr/lib/libcatalina-5.0.30.jar.so)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(javax.servlet.ServletReque

st, javax.servlet.ServletResponse) (/usr/lib/libcatalina-5.0.30.jar.so)

at com.rdt.filter.FilterRewrite.doFilter(javax.servlet.ServletRequest, javax.servlet.S

ervletResponse, javax.servlet.FilterChain) (Unknown Source)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(javax.servlet.Serv

letRequest, javax.servlet.ServletResponse) (/usr/lib/libcatalina-5.0.30.jar.so)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(javax.servlet.ServletReque

st, javax.servlet.ServletResponse) (/usr/lib/libcatalina-5.0.30.jar.so)

at org.apache.catalina.core.StandardWrapperValve.invoke(org.apache.catalina.Request, o

rg.apache.catalina.Response, org.apache.catalina.ValveContext) (/usr/lib/libcatalina-5.0.

30.jar.so)

at org.apache.catalina.core.StandardValveContext.invokeNext(org.apache.catalina.Reques

t, org.apache.catalina.Response) (/usr/lib/libcatalina-5.0.30.jar.so)

at org.apache.catalina.core.StandardPipeline.invoke(org.apache.catalina.Request, org.a

pache.catalina.Response) (/usr/lib/libcatalina-5.0.30.jar.so)

at org.apache.catalina.core.StandardContextValve.invokeInternal(org.apache.catalina.Wr

apper, org.apache.catalina.Request, org.apache.catalina.Response) (/usr/lib/libcatalina-5

.0.30.jar.so)

at org.apache.catalina.core.StandardContextValve.invoke(org.apache.catalina.Request, o

rg.apache.catalina.Response, org.apache.catalina.ValveContext) (/usr/lib/libcatalina-5.0.

30.jar.so)

at org.apache.catalina.core.StandardValveContext.invokeNext(org.apache.catalina.Reques

t, org.apache.catalina.Response) (/usr/lib/libcatalina-5.0.30.jar.so)

at org.apache.catalina.core.StandardPipeline.invoke(org.apache.catalina.Request, org.a

pache.catalina.Response) (/usr/lib/libcatalina-5.0.30.jar.so)

at org.apache.catalina.core.StandardHostValve.invoke(org.apache.catalina.Request, org.

apache.catalina.Response, org.apache.catalina.ValveContext) (/usr/lib/libcatalina-5.0.30.

jar.so)

at org.apache.catalina.core.StandardValveContext.invokeNext(org.apache.catalina.Reques

t, org.apache.catalina.Response) (/usr/lib/libcatalina-5.0.30.jar.so)

at org.apache.catalina.valves.ErrorReportValve.invoke(org.apache.catalina.Request, org

.apache.catalina.Response, org.apache.catalina.ValveContext) (/usr/lib/libcatalina-5.0.30

.jar.so)

at org.apache.catalina.core.StandardValveContext.invokeNext(org.apache.catalina.Reques

t, org.apache.catalina.Response) (/usr/lib/libcatalina-5.0.30.jar.so)

at org.apache.catalina.core.StandardPipeline.invoke(org.apache.catalina.Request, org.a

pache.catalina.Response) (/usr/lib/libcatalina-5.0.30.jar.so)

at org.apache.catalina.core.StandardEngineValve.invoke(org.apache.catalina.Request, or

g.apache.catalina.Response, org.apache.catalina.ValveContext) (/usr/lib/libcatalina-5.0.3

0.jar.so)

at org.apache.catalina.core.StandardValveContext.invokeNext(org.apache.catalina.Reques

t, org.apache.catalina.Response) (/usr/lib/libcatalina-5.0.30.jar.so)

at org.apache.catalina.core.StandardPipeline.invoke(org.apache.catalina.Request, org.a

pache.catalina.Response) (/usr/lib/libcatalina-5.0.30.jar.so)

at org.apache.catalina.core.ContainerBase.invoke(org.apache.catalina.Request, org.apac

he.catalina.Response) (/usr/lib/libcatalina-5.0.30.jar.so)

at org.apache.coyote.tomcat5.CoyoteAdapter.service(org.apache.coyote.Request, org.apac

he.coyote.Response) (/usr/lib/libcatalina-5.0.30.jar.so)

at org.apache.jk.server.JkCoyoteHandler.invoke(org.apache.jk.core.Msg, org.apache.jk.c

ore.MsgContext) (Unknown Source)

at org.apache.jk.common.HandlerRequest.invoke(org.apache.jk.core.Msg, org.apache.jk.co

re.MsgContext) (Unknown Source)

at org.apache.jk.common.ChannelSocket.invoke(org.apache.jk.core.Msg, org.apache.jk.cor

e.MsgContext) (Unknown Source)

at org.apache.jk.common.ChannelSocket.processConnection(org.apache.jk.core.MsgContext)

(Unknown Source)

at org.apache.jk.common.SocketConnection.runIt(java.lang.Object[]) (Unknown Source)

at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run() (/tmp/libtomcat-uti

l-5.0.30.jar.so10hffk.so)

at java.lang.Thread.run() (/usr/lib/libgcj.so.6.0.0)

Caused by: java.lang.ClassNotFoundException: java.lang.StringBuilder

at org.apache.catalina.loader.WebappClassLoader.loadClass(java.lang.String, boolean) (

/usr/lib/libcatalina-5.0.30.jar.so)

at org.apache.catalina.loader.WebappClassLoader.loadClass(java.lang.String) (/usr/lib/

libcatalina-5.0.30.jar.so)

at java.lang.Class.forName(java.lang.String, boolean, java.lang.ClassLoader) (/usr/lib

/libgcj.so.6.0.0)

...32 more

[6761 byte] By [radicjesa] at [2007-11-27 10:55:53]
# 1

>>>The server i run locally runs java 1.5 while the webserver runs java 1.4 (1.4.2)

My guess is that you compile the class using Java 1.5 but are trying to run it using J1v1 1.4 which can not find a library class due to version differences.

There should be a switch setting that when you compile the class files will be targeted for Java 1.4. Try that and see if it then works on the web server.

tolmanka at 2007-7-29 11:59:31 > top of Java-index,Enterprise & Remote Computing,Web Tier APIs...
# 2

Hello thank you for your answer,

I am now downloading the 1.4.2 sdk (did not have it).

Will try to compile it with that and try again,

thanks for your answer, will get back shortly

radicjesa at 2007-7-29 11:59:31 > top of Java-index,Enterprise & Remote Computing,Web Tier APIs...
# 3

Ok 1.4.2 does not support generics, unfortunately my whole application is stuffed with generics.

I will try and see if it is possible to upgrade on the webserver since it takes alot of time to adjust the whole app.

radicjesa at 2007-7-29 11:59:31 > top of Java-index,Enterprise & Remote Computing,Web Tier APIs...
# 4

Ok I uploaded a very simple application (just a filter with a jsp page) that sums up 2 string variables.

Result:

1.5 compiling => gives error

1.4 compiling => works!

So it was that, seems like I never tried to compile with 1.4 since it gave me all the unsupported generics errors.

I'll try convince the (external) webhosting to upgrade to at least 1.5 so the app will work, degrading it to 1.4 is alot of work (there was alot more changes not only in generics, but for example Integer and int combination as well).

Thanks for the suggestion !

radicjesa at 2007-7-29 11:59:31 > top of Java-index,Enterprise & Remote Computing,Web Tier APIs...