我想将自己写的类文件打包成一个.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、编写自己的类库,将所有类加上报名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)请问上述过程哪里出了问题?
解决方案 »
- 关于何时重写hashCode(),怎样重写hashCode()
- 关于Class类的一个问题
- 如何实现有三种状态的JCheckBox?
- udp传输数据包丢失问题.
- 为什么我的java程序一运行就蓝屏
- 请问JAVA做手机方面的开发,除了SUN的MIDP还有其他的什么开发工具吗???
- 方法变量在方法执行时创建,这句话有毛病嘛?
- 师傅们!救命呀!!我的jb突然不能用了。
- javase
- java注册表不小心删除了 现在jdk运行不了 求大神帮忙。
- 使用org.apache.jarkata.oro库进行字符串正则匹配的问题
- 菜鸟求教 JScrollPane.setVisible 怎么玩, 为啥false没问题, 但true没反映??
这里需要加入e:\lib\tool.jar如果为e:\lib\的话,它只会在e:\lib\目录下寻找你要的类,而不会进入tool.jar文件
我在为java自带的类库jar文件设置CLASSPATH就是这样设置的:c:\jdk1.5\lib\;没有问题
所以我想还不是您说的这个问题我觉得错误的可能性有两种:
1、类路径CLASSPATH设置的有问题,但是不知道错在哪里
2、jar文件制作的时候路径有问题是不是大家现在都使用IDE,已经没有人关心这个问题了?呵呵
Java1.4.2以后就不需要为系统库设置classpath了,所以你得C:\jdk1.5\lib\有与没有都是一样的
---bryantd\javatools\MyTool.java
|
+META-INF\manifest.mf
---src\bryantd\javatools\MyTool.java
|
+META-INF\manifest.mf
d:\src\>jar -cf tool.jar .
虽然是这么写的,但是实际操作的时候可能弄错了
现在问题都解决了,谢谢!另外这里怎么给分阿?我不会,教我一下