Still celebrating National IT Professionals Day with 3 months of free Premium Membership. Use Code ITDAY17

x
?
Solved

Wierd EmptyStackException from SAX

Posted on 2002-05-07
8
Medium Priority
?
453 Views
Last Modified: 2013-11-23
Hello,

I have written a class which utilizes the SAX api in JDK 1.4 in order to parse XML files. When running a small TesterUtility which I wrote to test it through the IDE everything works fine, however when running from the command line I kept on getting a java.util.EmptyStackException thrown somwhere within org.apache.crimson.Parser2.java.

Since generally such problems come from  a bad classpath, I added:
System.out.println(System.getProperty("java.class.path"));
in the begginning of the tester, and then began checking dir by dir which one was lacking.

After a while I found the when placing one of Fortes modules ('wasp-advanced.jar') in the classpath solved the problem and allowed the program to run from the command line as well. Now this is odd for two reasons:

a) I have absolutley no dependencies on wasp-advanced.jar, as does the SAX api. I have verified this by running a verbose output

b) The exception thrown was a java.util.EmptyStackException - which is a runtime exception, not a class not found exception, or any other exception one would expect to find when the VM doesn't find a class.

Unfortunatley the problem was not solved by simply adding the module into the classpath. I also need this to run under Tomcat, and placing the aforementioned module into Tomcats 'lib' directory does not help, and I still receive the same error.

So just to sum it all up:
a) The program worked fine under the IDE

b) Did not work under console until a single jar, wasp-advanced.jar, one of Forte's modules, was placed into the classpath. There are no dependencies on the jar file *verified* by running verbose output.

c) Adding this module into tomcat lib directory does not help, and the same EmptyStackException is still thrown, as if running from command prompt without correct classpath.

If anybody has any insight as to the origin of this error and/or suggestions for a solution they would be very much appreciated.
0
Comment
Question by:Solfire
[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
8 Comments
 
LVL 7

Expert Comment

by:yoren
ID: 6994371
Maybe there is a SAX parser in wasp-advanced.jar that you're using instead of Crimson when it's in your path.

How are you instantiating the parser? Try adding a line to see what parser you're using. Assuming you have a line like:

[XMLReader reader = ....]

Add:
System.out.println("Parser: " 
  + reader.getClass().getName());

As far as the EmptyStackException, that's not a classpath issue but rather an error parsing your document. It might be a bug in Crimson, and adding wasp-advanced.jar might be fixing it by using a different parser altogether.
0
 
LVL 16

Expert Comment

by:heyhey_
ID: 6994426
another option - try recompiling your project with command line javac.
0
 

Author Comment

by:Solfire
ID: 6996332
voren:
Well, I have already verified by using verbose output that nothing is being loaded from wasp-advanced.jar (everything comes from rt.jar, as is expected). The check you suggested returns the same result. Also, wouldn't the interpreter report any ambigous classes in it's classpath? i.e. when attempting to load classes with same name?

heyhey:
Unfortunatley by the time I read your message I had already rewritten the class to use a different XML package (namely EXML, www.themindelectric.com) which works fine. When I get home and a backup copy is available I will try a command line compile.
0
Concerto's Cloud Advisory Services

Want to avoid the missteps to gaining all the benefits of the cloud? Learn more about the different assessment options from our Cloud Advisory team.

 

Author Comment

by:Solfire
ID: 6996726
voren:
Well, I have already verified by using verbose output that nothing is being loaded from wasp-advanced.jar (everything comes from rt.jar, as is expected). The check you suggested returns the same result. Also, wouldn't the interpreter report any ambigous classes in it's classpath? i.e. when attempting to load classes with same name?

heyhey:
Unfortunatley by the time I read your message I had already rewritten the class to use a different XML package (namely EXML, www.themindelectric.com) which works fine. When I get home and a backup copy is available I will try a command line compile.
0
 
LVL 7

Expert Comment

by:yoren
ID: 6997187
Solfire,

I have worked quite a bit with Crimson and have never encountered an XML file that gives an EmptyStackException. Can you post or email (yuval@bluecast.com) the file?

Regarding the ambiguous class question, the class names for the parsers are not the same. If you're using XMLReaderFactory or JAXP to instantiate the parser, it uses a system property (org.xml.sax.driver) or service identitifer (META-INF/services/javax.xml.parsers/SAXParserFactory) to determine which class to load.

0
 
LVL 7

Expert Comment

by:yoren
ID: 6997234
Ignore that last comment. You specifically said the class name was Crimson. In this case, you've got one of the following:

- corrupt bytecode (fixed as heyhey said)
- a corrupt JDK (would need to reinstall)
- an actual bug in Crimson
0
 
LVL 35

Expert Comment

by:girionis
ID: 8709944
No comment has been added lately, so it's time to clean up this TA.

I will leave a recommendation in the Cleanup topic area that this question is:

- To be PAQ'ed and points NOT refunded

Please leave any comments here within the
next seven days.

PLEASE DO NOT ACCEPT THIS COMMENT AS AN ANSWER !

girionis
Cleanup Volunteer
0
 

Accepted Solution

by:
PashaMod earned 0 total points
ID: 8774368
Per Recommendation,

PashaMod
Community Support Moderator @Experts Exchange
0

Featured Post

Free Tool: Subnet Calculator

The subnet calculator helps you design networks by taking an IP address and network mask and returning information such as network, broadcast address, and host range.

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

Introduction This article is the first of three articles that explain why and how the Experts Exchange QA Team does test automation for our web site. This article explains our test automation goals. Then rationale is given for the tools we use to a…
Introduction This article is the last of three articles that explain why and how the Experts Exchange QA Team does test automation for our web site. This article covers our test design approach and then goes through a simple test case example, how …
Viewers will learn one way to get user input in Java. Introduce the Scanner object: Declare the variable that stores the user input: An example prompting the user for input: Methods you need to invoke in order to properly get  user input:
Viewers will learn about if statements in Java and their use The if statement: The condition required to create an if statement: Variations of if statements: An example using if statements:
Suggested Courses

722 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