• Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other Pie Elite all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Campbell Ritchie
  • Jeanne Boyarsky
  • Ron McLeod
  • Paul Clapham
  • Liutauras Vilda
Sheriffs:
  • paul wheaton
  • Rob Spoor
  • Devaka Cooray
Saloon Keepers:
  • Stephan van Hulst
  • Tim Holloway
  • Carey Brown
  • Frits Walraven
  • Tim Moores
Bartenders:
  • Mikalai Zaikin

json-simple-1.1.jar not found by Tomcat

 
Ranch Hand
Posts: 56
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
I am experimenting with JQuery ajax and $.get() methods. I have created a few examples, but the example I am currently working on is giving me an "internal error" message in my browser console window. I am using firefox 61.0.2, Tomcat 8  and jquery-3.3.1.js.

When I run this example, the console log prints out the request URL before giving the "internal error" message. If I enter that URL to my browser, the broswer gives the following error message:

HTTP Status 500 - Unable to compile class for JSP:

type Exception report

message Unable to compile class for JSP:

description The server encountered an internal error that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException: Unable to compile class for JSP:

An error occurred at line: [14] in the generated java file: [/usr/share/apache-tomcat-8.0.50/work/Catalina/localhost/jjaora/org/apache/jsp/jja_005fexamples/result4_jsp.java]
Only a type can be imported. org.json.simple.JSONObject resolves to a package

An error occurred at line: 8 in the jsp file: /jja_examples/result4.jsp
JSONObject cannot be resolved to a type
5: <%
6:  String name = request.getParameter("name");
7:  String age = request.getParameter("age");
8:     JSONObject json = new JSONObject();



I believe this error is being caused because the jar file json_simple-1.1.jar is not being found. The jar file is being stored in /jjaora/WEB-INF/lib, where /jjaora is the context root for my example website. I have done some reading and my understanding is that if json-simple-1.1.jar is in the .../WEB-INF/lib directory, Tomcat should find and load it.

Assuming that not finding the jar file is my problem, can someone explain how I can coax Tomcat to find the file?

Here is the full result4.jsp file:



 
Sheriff
Posts: 67746
173
Mac Mac OS X IntelliJ IDE jQuery TypeScript Java iOS
  • Likes 1
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
I do not believe that your guess is correct. You'd be getting a very different message if the jar file was not found.


For some reason, the compiler/translator thinks that JSONObject is a package, not a class.

Why is this code not in a servlet where it would be easier to debug? Putting Java code into a JSP is a bad practice that's been obsolete for over 16 years.
 
Jim J Anderson
Ranch Hand
Posts: 56
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

For some reason, the compiler/translator thinks that JSONObject is a package, not a class.



I thought this was a strange message, which led to my speculation. You are probably correct, but I'm not 100% convinced. I'm also guessing that the error is created during the translation from JSP to java. But again, just a guess.

Why is this code not in a servlet where it would be easier to debug? Putting Java code into a JSP is a bad practice that's been obsolete for over 16 years.



I have been working with JSP on and off for maybe 3 or 4 years now. Mostly experimenting and learning by trial and error. I was using an older text about JSP that has a lot of information and, logically, is probably organized pretty well.  But frankly, it never gave a good explanation on how to develop software using java and JSP. I bought another text a few weeks ago and from a tutorial point of view the new text is better. I would not recommend either text. I have not finished it yet, but I have already seen that writing servlets in java is the direction that I want to move. I could go on and on about how poorly JSP is documented, but I won't.

Anyway, thank you for your comment. It truly reinforces my thoughts about moving to servlets. I had not even thought about servlets making debugging easier. Since I work almost entirely on my own, improved debugging is VERY important to me. I spend far too much time debuggying, not developing. Historically, I'm a C/C++ and java developer and debugging software was never a major problem for me. Debugging in web site development is truly a different ball game. I'm going to start re-writing my examples, including this example, using servlets.

I am going to leave this thread open. Hopefully, after the weekend, I will return to close the issue, or to provide a re-written testcase.

Regards,
Jim
 
Bear Bibeault
Sheriff
Posts: 67746
173
Mac Mac OS X IntelliJ IDE jQuery TypeScript Java iOS
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
By moving Java code to servlets, you find compilation problems earlier, and usually with better error messages than the JSP translator provides.

Also, by keeping the JSPs "dumb" the chances of there being problems in JSPs is vastly minimized. Be sure to use only the JSTL and EL and never Java scriptlets. (E.g. <% should never be used). Be sure that any text you use covers JSP 2+, not JSP 1.x.

You might find this article on properly structuring Java web applications interesting.
 
Saloon Keeper
Posts: 27752
196
Android Eclipse IDE Tomcat Server Redhat Java Linux
  • Likes 1
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

Bear Bibeault wrote:By moving Java code to servlets, you find compilation problems earlier, and usually with better error messages than the JSP translator provides.



You can also set breakpoints and run the code through a debugger. It's next to impossible to do that when working with code embedded in a JSP.

For this reason, not only should you do your heavy work in a servlet, you should likewise do heavy calculating outside the JSP. That is, keep EL expressions simple. It not only enhances the Separation of Concerns between Model, View, and Controller, here also it's easier to run servlet-based EL variable computations in Java code instead of on the JSP itself.
 
Bear Bibeault
Sheriff
Posts: 67746
173
Mac Mac OS X IntelliJ IDE jQuery TypeScript Java iOS
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

Tim Holloway wrote:not only should you do your heavy work in a servlet, you should likewise do heavy calculating outside the JSP


Quoted for emphasis!
 
reply
    Bookmark Topic Watch Topic
  • New Topic