Solved

NoClassDefFoundError

Posted on 2004-04-01
12
864 Views
Last Modified: 2013-11-23
Colleagues,

I have written a program, which uses a Comm package to talk to the serial port (I'm using Sun One). It's main class is the SerialPortEventListener:

public class CTesaComm extends javax.swing.JFrame implements SerialPortEventListener {
...
}

The program build successfully, but when i try to run it, like this:

java -cp . CTesaComm

It gives this error

Exception in thread "main" java.lang.NoClassDefFoundError: javax/comm/SerialPort
EventListener
        at java.lang.ClassLoader.defineClass0(Native Method)
        at java.lang.ClassLoader.defineClass(Unknown Source)
        at java.security.SecureClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.access$100(Unknown Source)
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClassInternal(Unknown Source)

When I try to run my program without the -cp option, it gives this error:

Exception in thread "main" java.lang.NoClassDefFoundError: CTesaComm

Here's my CLASSPATH (system variable under XP):

C:\j2sdk1.4.2_04\lib\comm.jar; E:\n\kalaco\comm\app

The first one is the comm library, the latter one is the path to my program.


What am I doing wrong?


Thanks,
Nick
0
Comment
Question by:kender_a
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 7
  • 4
12 Comments
 
LVL 86

Accepted Solution

by:
CEHJ earned 125 total points
ID: 10735587
Change

>>java -cp . CTesaComm


to


java -cp .;%CLASSPATH% CTesaComm
0
 
LVL 86

Expert Comment

by:CEHJ
ID: 10735605
If you have a classpath set, you should probably add the current directory to it so change:

>>C:\j2sdk1.4.2_04\lib\comm.jar; E:\n\kalaco\comm\app


to

.;C:\j2sdk1.4.2_04\lib\comm.jar;E:\n\kalaco\comm\app



0
 
LVL 1

Author Comment

by:kender_a
ID: 10735690
>> java -cp .;%CLASSPATH% CTesaComm

It worked, and I have two additional questions:

1. My program can not find ports any more (but doesn't raise any exceptions)?

2. What should I ship to a person, who doesn't have JDK?

Thanks,
Nick
0
Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
LVL 86

Expert Comment

by:CEHJ
ID: 10735737
1. I think the phrase 'any more' is a little dubious ;-) It can't have been finding them before. All i can suggest is to look closely at the examples that come with Java Comm and make sure your code mimics it.

2. What should I ship to a person, who doesn't have JDK?

They will have to install the JRE (runtime environment they don't need the SDK). Point them to the link to that on the Sun site. Alternatively you could use Java Web Start (see Sun site)
0
 
LVL 1

Author Comment

by:kender_a
ID: 10735845
When the my application was running in the debugger it WAS successfully enumerating ports. After I wrote this question, I had copied the java.comm.properties and win32com.dll into my release and JRE folders, but it didn't help.
0
 
LVL 86

Expert Comment

by:CEHJ
ID: 10735917
Oh OK - you were running in a different way before then?

Copy the dll into one of the directories revealed by running this program with the parameter "java.library.path"


/**
 *  Description of the Class
 *
 * @author     CEHJ
 * @created    30 March 2004
 */
public class Props {

        /**
         *  The main program for the Props class
         *
         * @param  args  The command line arguments
         */
        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);
                }
        }
}

Not sure where the props file should go - check docs
0
 
LVL 86

Expert Comment

by:CEHJ
ID: 10735974
>>Not sure where the props file should go - check docs

But almost certainly in your classpath ;-)
0
 
LVL 1

Author Comment

by:kender_a
ID: 10743487
I have figured out where to put the propertirs and the dll:

win32comm.dll.... C:\Program Files\JavaSoft\JRE\1.3.1_01\bin

comm.jar ....C:\Program Files\JavaSoft\JRE\1.3.1_01\lib\ext

javax.comm.properties....C:\Program Files\JavaSoft\JRE\1.3.1_01\lib.
0
 
LVL 1

Author Comment

by:kender_a
ID: 10743496
I have another question, though, if you will.

How to make a windows shortcut to launch my app quickly?

Thasnk,
Nick
0
 
LVL 86

Expert Comment

by:CEHJ
ID: 10743533
Various ways

a. Right click the folder or desktop and choose 'Create shortcut'. Put same command as you do at the command line in there
b. Create an executable jar
http://www.cs.princeton.edu/introcs/80systems/jar/jar.html
0
 
LVL 30

Expert Comment

by:Mayank S
ID: 10751690
You can also make a batch-file which runs the command that you use to run your app, and either place the batch file on the desktop (be sure to change your directory to the directory containing the class-file), or make a short-cut to the batch file.
0
 
LVL 86

Expert Comment

by:CEHJ
ID: 10769828
8-)
0

Featured Post

Free Tool: Path Explorer

An intuitive utility to help find the CSS path to UI elements on a webpage. These paths are used frequently in a variety of front-end development and QA automation tasks.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
spring jars download 1 53
ejb wildfly example 2 74
Is there a simpler dropbox system? 10 44
Selenium docs api java index 3 68
Java functions are among the best things for programmers to work with as Java sites can be very easy to read and prepare. Java especially simplifies many processes in the coding industry as it helps integrate many forms of technology and different d…
Basic understanding on "OO- Object Orientation" is needed for designing a logical solution to solve a problem. Basic OOAD is a prerequisite for a coder to ensure that they follow the basic design of OO. This would help developers to understand the b…
Video by: Michael
Viewers learn about how to reduce the potential repetitiveness of coding in main by developing methods to perform specific tasks for their program. Additionally, objects are introduced for the purpose of learning how to call methods in Java. Define …
Viewers will learn about the different types of variables in Java and how to declare them. Decide the type of variable desired: Put the keyword corresponding to the type of variable in front of the variable name: Use the equal sign to assign a v…

733 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question