简单地说,我已经编译好了一个javaBean,生成了.class文件,并在jsp页面中成功调用和访问了。现在我又通过这个.class文件编译生成了一个.jar包,并放在了tomcat的安装目录下的common\lib,比如是 D:\Program Files\Apache Software Foundation\Tomcat 5.5\common\lib下。在jsp程序中,在预编译语句中添加了 <%@page import="mm.hi"%> 这句话。结果总说找不到包(Only a type can be imported. mm.hi resolves to a package)。现在我想问问,有谁知道如何在jsp中访问一个自己编译好的包?考虑到我领悟力奇低,请尽量详细点。假如现有一个名叫 hi.java 的文件,里面内容如下:
public class hi
{
         private String myWords;

public hi()
{
   myWords = "Hello. This is a pretty world!";
   System.out.println(myWords);
}

public String getMyWords()
{
   return myWords;
}
}
经过编译后生成了hi.class文件;已经可以通过javaBean的调用成功访问了;
现在应该如何生成一个正确的.jar文件并可在jsp中正常访问呢?在dos下编译时要注意哪些地方呢?
生成好的.jar文件应该放置在什么位置比较正确?
在jsp中调用语句怎么写才是正确的?无论对错,请尽量回答。考虑到本人天生迟钝异常,请尽可能地详细点。拜托了。

解决方案 »

  1.   

    class hi has to have a package name
    for example:package com.tom.www;public class hi
    {...
      

  2.   

    生成jar包了以后,放到lib目录里面
    在jsp页面中导入你相应的类就可以了
    现在应该如何生成一个正确的.jar文件并可在jsp中正常访问呢?
    jar -cvf kkk.jar xxx.class在dos下编译时要注意哪些地方呢?
    注意包的层次生成好的.jar文件应该放置在什么位置比较正确?
    如果是B/S程序,只能放在web-inf/lib目录中
    如果是c/s程序,放到classpath中在jsp中调用语句怎么写才是正确的?
    import 包名/类名(com.tom.Class)
      

  3.   

    建议把你的hi.class防在一个package里面吧,不要这样赤裸裸的
      

  4.   

    嗨,各位,我照楼上说的做了,现结果如下:hi.java 的内容如下:package com.tom.mine;public class hi
    {
        private String myWords;

        public hi()
        {
           myWords = "Hello. This is CJ's world!";
           System.out.println(myWords);
        }
    }然后我把这个文件放在了 D:\jsp\WEB-INF\lib 下;我设置的虚拟路径是 <Context path="/jsp" docBase="D:/jsp/" debug="0" reloadable="true" crossContext="true">
    通常我把我写的javaBean(.class文件)都放在 D:\jsp\WEB-INF\classes 目录下;而现在我把hi.java放在了 D:\jsp\WEB-INF\lib 下;然后在命令提示符下,我进入到了 D:\jsp\WEB-INF\lib 下,现执行 javac hi.java,生成了 hi.class; 然后运行 jar cfv mine.jar hi.class,生成了mine.jar;然后在jsp页面中我在预编译行中加上了 <%@page import="com.tom.mine"%> 这句话。最后重启 tomcat,运行jsp页面,最后的结果还是说找不到类: Only a type can be imported. com.tom.mine resolves to a package我又把 hi.java 放到了tomcat安装目录下的common/lib 下(当然系统变量 classpath 已经正确设置),再进入dos,再进入正确的目录,再编译;再重启 tomcat;再运行页面;还是报相同的错。有谁知道我到底什么地方做错了呢?到底该如何正确地调用自己编译的包呢?
      

  5.   

    那是引用不到,可能是配置的问题
    放入WEB-INF/lib目录 要进行配置
    web.xml
      

  6.   

    我想我的配置没问题的。至少我编写的javaBean(.class)都可以正常调用和运行。如果是要设置web.xml,可不可以说具体点,要怎么配置呢?
      

  7.   

    如果是TOMCAT,先在tomcat/webapps下建一个你的应用,可以参照TOMCAT提供的sample
    里面要有一个WEB-INF文件夹,在下面建立一个classes文件夹,一个lib文件夹,一个web.xml,你的类放在classes里面就可以了,比如是package c.b.a
    如果引用了别的包,放在lib文件夹里面
    JSP里面import c.b.a就可以
    web.xml开始可以用TOMCAT例子里的
      

  8.   

    Only a type can be imported. com.tom.mine resolves to a package
    com.tom.mine 是肯定不对的,这只是包的名字,后面还要加上类的名字,其码要com.tom.mine.*
      

  9.   

    接着说清楚点,就是其码要<%@page import="com.tom.mine.*"%>或
    <%@page import="com.tom.mine.hi"%>
      

  10.   

    哇哦。也许楼上说得对。我试过了,把 <%@page import="com.tom.mine"%> 改成了 <%@page import="com.tom.mine.*"%> ,的确预编译这里跳过了,不再说 Only a type can be imported. com.tom.mine resolves to a package ;现在问题又来了:在后面的调用中我是这么写的: String tem = hi.getMyWords(); 然后在页面编译时出错了,说是 getMyWords() 没定义: The method getMyWords() is undefined for the type hi我还是再完整地说遍我的操作步骤吧:首先我写了个很简单的javaBean,取名叫 hi.java ,内容如下:package com.tom.mine;public class hi
    {
        private String myWords;

        public hi()
        {
           myWords = "Hello. This is a pretty world!";
           System.out.println(myWords);  //这句话无所谓的;
        }

        public String getMyWords()
        {
           return myWords;
        }
    }我把它保存在了 D:\jsp\WEB-INF\lib 下;我设置的虚拟路径是 <Context path="/jsp" docBase="D:/jsp/" debug="0" reloadable="true" crossContext="true">
    通常我把我写的 javaBean(.class文件)都放在 D:\jsp\WEB-INF\classes 目录下;而现在我把 hi.java 放在了 D:\jsp\WEB-INF\lib 下;然后在命令提示符下,我进入到了 D:\jsp\WEB-INF\lib 下,再执行 javac hi.java,生成了 hi.class; 然后运行 jar cfv mine.jar hi.class,生成了mine.jar;然后在jsp页面中我在预编译行中加上了 <%@page import="com.tom.mine.*"%> 这句话;并在下面的源程序中添加了如下几句话:hi myHi;                            //  这句话通过了;没报错;
    String tem  = myHi.getMyWords();   //   这句话不行了,说是没定义方法 getMyWords() 
    String tem2 = hi.getMyWords();    //    这句话也挂了,理由同上;没定义方法然后我重启tomcat,运行页面,结果就出现了上述的错误,shuo说是类hi没定义方法 getMyWords() ,原句如下: The method getMyWords() is undefined for the type hi  还重复了两遍。有谁知道到底该怎么调用这个包吗?正确的方法是怎样的呢?考虑到本人天生迟钝异常,请尽量详细点好吗?
      

  11.   

    hi myHi;                            //  这句话通过了;没报错;
    String tem  = myHi.getMyWords();   //   这句话不行了,说是没定义方法 getMyWords() 
    String tem2 = hi.getMyWords();    //    这句话也挂了,理由同上;没定义方法
    myHi没有初始化啊
    改成hi myHi=new hi()试试