java.lang.NoClassDefFoundError

Hi experts, I get this error when I try to execute a java file. Thanks

D:\DS\dsSoapLab>java gmit.CalcClient
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/axis/utils
/Options
        at gmit.CalcClient.main(CalcClient.java:12)

the java file:
package gmit;

import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.apache.axis.encoding.XMLType;
import org.apache.axis.utils.Options;

import javax.xml.rpc.ParameterMode;

public class CalcClient{
      public static void main(String [] args) throws Exception{
            Options options = new Options(args);

            String endpoint = "http://localhost:8080/axis/Calculator.jws";

            // Do argument checking
             args = options.getRemainingArgs();

             if (args == null || args.length != 3){
                  System.err.println("Usage: CalcClient <add|subtract arg1 arg2");
                 return;
             }

             String method = args[0];
             if (!(method.equals("add") || method.equals("subtract"))) {
                  System.err.println("Usage: CalcClient <add|subtract arg1 arg2");
                  return;
             }

            // Make the call
             Integer i1 = new Integer(args[1]);
             Integer i2 = new Integer(args[2]);

             Service service = new Service();
             Call call = (Call) service.createCall();

        call.setTargetEndpointAddress(new java.net.URL(endpoint));
        call.setOperationName( method );
        call.addParameter("op1", XMLType.XSD_INT, ParameterMode.IN);
        call.addParameter("op2", XMLType.XSD_INT, ParameterMode.IN);
        call.setReturnType(XMLType.XSD_INT);

        Integer ret = (Integer) call.invoke( new Object [] { i1, i2 });

        System.out.println("Got result : " + ret);
      }
}
RonayneAsked:
Who is Participating?

[Webinar] Streamline your web hosting managementRegister Today

x
 
CEHJConnect With a Mentor Commented:
Since you already have a classpath set, you may as well simply add a path to the jar to it, or you may find you have to put another copy in C:\j2sdk1.4.0_03\lib\ext if you want to compile against it - it's up to you though.
0
 
CEHJCommented:
Sounds like the Apache Axis libraries not in classpath. Place jars in all lib\ext directories
0
 
Tommy BraasCommented:
Type:
D:\DS\dsSoapLab>java -cp .;<location of axis.jar> gmit.CalcClient
0
The new generation of project management tools

With monday.com’s project management tool, you can see what everyone on your team is working in a single glance. Its intuitive dashboards are customizable, so you can create systems that work for you.

 
CEHJCommented:
More particularly, your runtime classpath does not correspond to your compile time one. If you want to keep the number of copies of these jars down to a minimum, you can avoid following my first suggestion but instead, you'll have to set the runtime classpath to the same one that was used at compile time.
0
 
CEHJCommented:
Here is some general info on the classpath:

http://mindprod.com/jgloss/classpath.html
0
 
RonayneAuthor Commented:
This is my classpath

C:\>set classpath
CLASSPATH=.;C:\j2sdk1.4.0_03\lib;c:\rmi\gmit;C:\Program Files\Apache Group\Tomca
t 4.1\server\lib\catalina.jar;D:\xml-xindice-1.0\java\lib\xindice.jar;c:\castor-
0.9.5.2.jar;d:\DS\dsSoapLab\gmit
0
 
RonayneAuthor Commented:

I have axis.jar in my jre/lib/ext folder in my jdk
0
 
CEHJCommented:
>>d:\DS\dsSoapLab\gmit

That one's not actually right in fact. Should be

d:\DS\dsSoapLab

But forget that for the moment. Before running from that directory , type

set classpath=

and try it again
0
 
CEHJCommented:
>>and try it again

Meaning running, not compiling
0
 
RonayneAuthor Commented:

I tried that and I got the same error
0
 
CEHJCommented:
Now there's no classpath, run this program with the parameter "java.ext.dirs" and tell me the output:

public class Props {
      
      public static void main(String[] args) {
            if (args.length > 0) {
                  for (int i = 0; i < args.length; i++) {
                        System.out.println(System.getProperty(args[0]));
                  }
            }
            else {
                  System.getProperties().list(System.out);
            }
      }
}
0
 
RonayneAuthor Commented:

I removed the classpath from my environmental variable settings but still the same error
0
 
CEHJCommented:
You shouldn't have done that really, but no matter - you posted it here so you can restore it. You can unset/set the classpath per instance of a command window, so there's no need to do that. Anyway, leave it empty for the moment and compile and run the above.
0
 
RonayneAuthor Commented:

I ran that program and got this:
c:\program files\java\j2re1.4.0_03\lib\ext
0
 
RonayneAuthor Commented:

i saved a copy in notepad anyway, i wouldnt be so daft as to stop myself from undoing the changes I make
0
 
CEHJCommented:
OK. That's where that Axis jar should be
0
 
RonayneAuthor Commented:

that is brilliant, thank you very much, how does your code work?
0
 
RonayneAuthor Commented:

I thought jdk automatically looks in jre/lib/ext for jar files?
0
 
CEHJCommented:
>>I thought jdk automatically looks in jre/lib/ext for jar files?

Yes it does. Your axis.jar must not have been there originally
0
 
RonayneAuthor Commented:

my axis jar file was always in jre/lib/ext, even when it threw my original error, thats why im confused. Id just like to know why it did'nt work  
0
 
CEHJCommented:
I'm not sure at the moment. Keep the jar where it is and reset the classpath (in environment variables) to *exactly* what it was before and we'll see if we can break it again ;-)
0
 
RonayneAuthor Commented:

ive done that and everything is working fine now, just one of those things I geuss.
0
 
CEHJCommented:
OK - we'll let it ride ;-)
0
 
RonayneAuthor Commented:
Fine by me
0
All Courses

From novice to tech pro — start learning today.