黑马程序员技术交流社区

标题: 关于jar包 [打印本页]

作者: 贾存双    时间: 2012-7-11 21:24
标题: 关于jar包
package org.jcs.a ;
public class JarDemo{
public String getInfo(){
  return "jar包中的方法" ;
}
} ;
将上面代码打包编译成名为 myjar.jar 包
package org.jcs ;
import org.jcs.a.* ;
public class MainJarDemo{
public static void main(String args[]){
  JarDemo jar = new JarDemo() ;
  System.out.println(jar.getInfo()) ;
}
} ;
这个打包成一个包。
我的电脑几经配置好classpath路径: .;%java_home%\lib;%java_home%\lib\tools.jar;%java_home%\lib\dt.jar;%java_home%\jre\lib\rt.jar;
我要问的问题是为什么在控制台运行这个程序的时候还要再设置一次classpath路径指定jar包: E:\demo>set classpath=.;e:\demo\myjar.jar 才能运行这个程序。
E:\demo>java org.jcs.MainJarDemo
Exception in thread "main" java.lang.NoClassDefFoundError: org/jcs/a/JarDemo
        at org.jcs.MainJarDemo.main(MainJarDemo.java:5)
Caused by: java.lang.ClassNotFoundException: org.jcs.a.JarDemo
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        ... 1 more


作者: 张莹莹    时间: 2012-7-12 00:59
建议打包的时候使用JarFat插件,这样可以帮助你解决classpath路径的问题,一劳永逸
http://fjep.sourceforge.net
问题应该出在Eclipse中自带打包工具,在打包时并没有把类路径写入到jar包中的MANIFEST.MF文件中




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2