Re: Class files for jsp

From: Raymond DeCampo (rdecampo_at_spam-I-am-not.twcny.rr.com)
Date: 12/17/03


Date: Wed, 17 Dec 2003 02:20:21 GMT

Harold Ensle wrote:
> "Raymond DeCampo" <rdecampo@spam-I-am-not.twcny.rr.com> wrote in message
> news:VawCb.8206$JW3.1030@twister.nyroc.rr.com...
>
>>Harold Ensle wrote:
>>
>>>I am using Jserv on apache and I cannot instantiate from a class file in
>>>JSP.
>>>I was using servlets before and any class I put in the same directory
>
> (or
>
>>>other directories indicated with a classpath in the Jservproperties
>
> file)
>
>>>would work fine. But JSP files (which are in a different directory)
>
> cannot
>
>>>seem to find my classes no matter where I put them...whether in a
>
> classpath
>
>>>or not. I even put them in the WEB_INF/classes folder and still nothing.
>>>I have searched everywhere for an answer. Does anyone know???
>>>
>>
>>Harold,
>>
>>Perhaps you should post some sample code and describe the directory
>>structure of your WAR. One question comes to mind however: did you
>>import the desired classes with <@page import="" @> ?
>>
>>Ray
>
>
> Thank you for the reply. This seems to be part of the problem. So I now have
> something
> like:
>
> <%@ page import="ZClass"%>
> <%
> ZClass zc=new ZClass(1);
> %>
>
> The class itself has:
>
> public class ZClass
> {
> ZClass(int x)
> {
> ......
> }
> }
>
> Now the JSP is acting like it finds the class (no error on the import)
> but it is saying there is no constructor of the type to be found.
> But I see a constructor there. What did I do wrong?
>
> (I think Java hates me.)
>

I would wager that the issue is that you didn't declare the constructor
public, like so:

public class ZClass
{
    public ZClass(int x)
    {
     ......
    }
}

Java defines four access levels: public, protected, private and package
or default. Package level is the default that is used when no access
specifier is, well, specified. (IMHO, it would have been better to make
an explicit keyword for package level and require one.) Public,
protected and private behave as one would expect from other OO
languages. Package level defines an access level within a package; any
class within the same package can access the method, variable, etc.
This provides functionality similar to C++ friends. Note that unless
the package is sealed, nothing prevents others from creating classes in
the same package and exploiting the access, if you care about that sort
of thing.

Another interesting thing is that the access levels in descending order
are public, protected, package and private. That means that protected
implies package. Which means that you cannot have methods, variables
etc that are visible to the subclass but not to the other members of the
package. (IMHO, I would have preferred public, package, protected and
private; or even something not well-ordered where package and protected
are unrelated.)

Ray



Relevant Pages

  • python.org CMS
    ... posting job ads -- getting the community to do our grunt work for us is ... than in package comparisons. ... access levels to large and small sections of the site). ... The system needs to work with browsers that have limited functionality ...
    (comp.lang.python)
  • Re: Class files for jsp
    ... > Harold Ensle wrote: ... >> public class ZClass ... > Java defines four access levels: ... Package level is the default that is used when no access ...
    (comp.lang.java)
  • Re: void method()
    ... There is no "basically private" access. ... There are four access levels, ... void addis a method in ThreadGroup that has default (or package private) access. ...
    (comp.lang.java.programmer)
  • OO problem: Performing actions on messages (very long, sorry)
    ... I'm new to Ada. ... action shall override a field in a message. ... package M1_Float_Override_Action is new Action.Override ... type Instance is abstract tagged private; ...
    (comp.lang.ada)
  • Re: Private primitive operations available to entire package hierarchy. Can it be done?
    ... > class name would possibly be ok in the private part of the root package ... Putting all the other primitives I need to be private from ... point of the registration package (clearly it knows about the type ...
    (comp.lang.ada)