我想将自己写的类文件打包成一个.jar文件,方便自己以后编写其他类文件时候使用。我的所有操作步骤如下:
1、编写自己的类库,将所有类加上报名package bryantd.javatools
比如这个类库中的一个文件是这样的:
//MyTool.javapackage bryantd.javatools;public class MyTool{
    public MyTool(){
        System.out.println("An object of MyTool class in the package bryantd.javatools");
    }
}这个文件的物理位置为:d:\src\bryantd\javatools\MyTool.java
编译该文件:
d:\src\bryantd\javatools>javac MyTool.java
编译成功,生成MyTool.class。3、将这个类库制作成.jar文件
d:\src\>jar -cf tool.jar .
制作成功,并将这个jar文件放置在e:\lib\目录下,即:e:\lib\tool.jar4、在e:\下编写测试类文件:
//JarTest.javaimport bryantd.javatools.MyTool;public class JarTest{
    public static void main(String[] args){
MyTool my = new MyTool();
    }
}这个文件的物理位置为:e:\JarTest.java
编译该文件:e:\>javac -classpath e:\lib\tool.jar JarTest.java
编译成功5、修改CLASSPATH环境变量,我的系统是XP,直接在CLASSPATH中加入:……; e:\lib\;
执行测试类:e:\>java JarTest
出现运行时错误提示:
Exception in thread "main" java.lang.NoClassDefFoundError:bryantd/javatools/MyTool
at TarTest.main(JarTest.java:5)请问上述过程哪里出了问题?          

解决方案 »

  1.   

    直接在CLASSPATH中加入:……; e:\lib\;
    这里需要加入e:\lib\tool.jar如果为e:\lib\的话,它只会在e:\lib\目录下寻找你要的类,而不会进入tool.jar文件
      

  2.   

    按照楼上的方法做了,还是不行,会出现同样的问题。
    我在为java自带的类库jar文件设置CLASSPATH就是这样设置的:c:\jdk1.5\lib\;没有问题
    所以我想还不是您说的这个问题我觉得错误的可能性有两种:
    1、类路径CLASSPATH设置的有问题,但是不知道错在哪里
    2、jar文件制作的时候路径有问题是不是大家现在都使用IDE,已经没有人关心这个问题了?呵呵
      

  3.   

    那可能是你写得classpath不全,一些你用到的别的类没有添加进来,
    Java1.4.2以后就不需要为系统库设置classpath了,所以你得C:\jdk1.5\lib\有与没有都是一样的
      

  4.   

    看一下你的jar文件中的目录结构是不是正确的。如果是对的,在jar文件里面的一级目录应该是
    ---bryantd\javatools\MyTool.java
       |
       +META-INF\manifest.mf
      

  5.   

    请问楼上的朋友用什么命令展开jar文件来观察它的目录结构?
      

  6.   

    用WinRAR就可以打开.jar文件了,和打开rar,zip文件一样
      

  7.   

    我找到错误了,我自己打包的时候路径不对
    ---src\bryantd\javatools\MyTool.java
       |
       +META-INF\manifest.mf
    d:\src\>jar -cf tool.jar .
    虽然是这么写的,但是实际操作的时候可能弄错了
    现在问题都解决了,谢谢!另外这里怎么给分阿?我不会,教我一下